Skip to content

Commit

Permalink
Support for MERGE statement (DNET-815)
Browse files Browse the repository at this point in the history
  • Loading branch information
cincuranet committed Jul 10, 2018
1 parent 9994749 commit ff8668a
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 2 deletions.
Expand Up @@ -267,6 +267,17 @@ public void RecreatePackageBody()
Assert.AreEqual(SqlStatementType.RecreatePackageBody, script.Results[0].StatementType);
}

[Test]
public void Merge()
{
const string text =
@"merge into table t using foo f on f.id = t.id when ";
FbScript script = new FbScript(text);
script.Parse();
Assert.AreEqual(1, script.Results.Count());
Assert.AreEqual(SqlStatementType.Merge, script.Results[0].StatementType);
}

#endregion
}
}
Expand Up @@ -178,6 +178,7 @@ public void Execute(bool autoCommit = true)
case SqlStatementType.Grant:
case SqlStatementType.Insert:
case SqlStatementType.InsertCursor:
case SqlStatementType.Merge:
case SqlStatementType.Open:
case SqlStatementType.Prepare:
case SqlStatementType.Revoke:
Expand Down
10 changes: 8 additions & 2 deletions Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs
Expand Up @@ -238,7 +238,6 @@ static bool IsSetTermStatement(string statement, out string newTerm)
{
return SqlStatementType.CreateIndex;
}
// this needs to be before CREATE PACKAGE to properly match
if (sqlStatement.StartsWith("CREATE PACKAGE BODY", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.CreatePackageBody;
Expand Down Expand Up @@ -450,6 +449,14 @@ static bool IsSetTermStatement(string statement, out string newTerm)
}
break;

case 'M':
case 'm':
if (sqlStatement.StartsWith("MERGE", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.Merge;
}
break;

case 'O':
case 'o':
if (sqlStatement.StartsWith("OPEN", StringComparison.OrdinalIgnoreCase))
Expand All @@ -476,7 +483,6 @@ static bool IsSetTermStatement(string statement, out string newTerm)
{
return SqlStatementType.RecreateFunction;
}
// this needs to be before RECREATE PACKAGE to properly match
if (sqlStatement.StartsWith("RECREATE PACKAGE BODY", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.RecreatePackageBody;
Expand Down
Expand Up @@ -90,6 +90,7 @@ public enum SqlStatementType
Grant,
Insert,
InsertCursor,
Merge,
Open,
Prepare,
RecreateFunction,
Expand Down

0 comments on commit ff8668a

Please sign in to comment.