Skip to content

Commit

Permalink
FbScript support for packages (DNET-834, DNET-835)
Browse files Browse the repository at this point in the history
  • Loading branch information
cincuranet committed Jul 10, 2018
1 parent b8fec2d commit 9994749
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 0 deletions.
Expand Up @@ -223,6 +223,50 @@ public void ManuallySettingStatementType()
Assert.AreEqual(SqlStatementType.CreateDatabase, script.Results[0].StatementType);
}

[Test]
public void CreatePackage()
{
const string text =
@"create package p as begin end";
FbScript script = new FbScript(text);
script.Parse();
Assert.AreEqual(1, script.Results.Count());
Assert.AreEqual(SqlStatementType.CreatePackage, script.Results[0].StatementType);
}

[Test]
public void RecreatePackage()
{
const string text =
@"recreate package p as begin end";
FbScript script = new FbScript(text);
script.Parse();
Assert.AreEqual(1, script.Results.Count());
Assert.AreEqual(SqlStatementType.RecreatePackage, script.Results[0].StatementType);
}

[Test]
public void CreatePackageBody()
{
const string text =
@"create package body p as begin end";
FbScript script = new FbScript(text);
script.Parse();
Assert.AreEqual(1, script.Results.Count());
Assert.AreEqual(SqlStatementType.CreatePackageBody, script.Results[0].StatementType);
}

[Test]
public void RecreatePackageBody()
{
const string text =
@"recreate package body p as begin end";
FbScript script = new FbScript(text);
script.Parse();
Assert.AreEqual(1, script.Results.Count());
Assert.AreEqual(SqlStatementType.RecreatePackageBody, script.Results[0].StatementType);
}

#endregion
}
}
Expand Up @@ -126,6 +126,7 @@ public void Execute(bool autoCommit = true)
case SqlStatementType.AlterException:
case SqlStatementType.AlterFunction:
case SqlStatementType.AlterIndex:
case SqlStatementType.AlterPackage:
case SqlStatementType.AlterProcedure:
case SqlStatementType.AlterRole:
case SqlStatementType.AlterSequence:
Expand All @@ -139,6 +140,8 @@ public void Execute(bool autoCommit = true)
case SqlStatementType.CreateFunction:
case SqlStatementType.CreateGenerator:
case SqlStatementType.CreateIndex:
case SqlStatementType.CreatePackage:
case SqlStatementType.CreatePackageBody:
case SqlStatementType.CreateProcedure:
case SqlStatementType.CreateRole:
case SqlStatementType.CreateSequence:
Expand Down Expand Up @@ -179,6 +182,8 @@ public void Execute(bool autoCommit = true)
case SqlStatementType.Prepare:
case SqlStatementType.Revoke:
case SqlStatementType.RecreateFunction:
case SqlStatementType.RecreatePackage:
case SqlStatementType.RecreatePackageBody:
case SqlStatementType.RecreateProcedure:
case SqlStatementType.RecreateTable:
case SqlStatementType.RecreateTrigger:
Expand Down
23 changes: 23 additions & 0 deletions Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs
Expand Up @@ -156,6 +156,10 @@ static bool IsSetTermStatement(string statement, out string newTerm)
{
return SqlStatementType.AlterIndex;
}
if (sqlStatement.StartsWith("ALTER PACKAGE", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.AlterPackage;
}
if (sqlStatement.StartsWith("ALTER PROCEDURE", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.AlterProcedure;
Expand Down Expand Up @@ -234,6 +238,16 @@ 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;
}
if (sqlStatement.StartsWith("CREATE PACKAGE", StringComparison.OrdinalIgnoreCase) ||
sqlStatement.StartsWith("CREATE OR ALTER PACKAGE", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.CreatePackage;
}
if (sqlStatement.StartsWith("CREATE PROCEDURE", StringComparison.OrdinalIgnoreCase) ||
sqlStatement.StartsWith("CREATE OR ALTER PROCEDURE", StringComparison.OrdinalIgnoreCase))
{
Expand Down Expand Up @@ -462,6 +476,15 @@ 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;
}
if (sqlStatement.StartsWith("RECREATE PACKAGE", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.RecreatePackage;
}
if (sqlStatement.StartsWith("RECREATE PROCEDURE", StringComparison.OrdinalIgnoreCase))
{
return SqlStatementType.RecreateProcedure;
Expand Down
Expand Up @@ -28,6 +28,7 @@ public enum SqlStatementType
AlterException,
AlterFunction,
AlterIndex,
AlterPackage,
AlterProcedure,
AlterRole,
AlterSequence,
Expand All @@ -45,6 +46,8 @@ public enum SqlStatementType
CreateFunction,
CreateGenerator,
CreateIndex,
CreatePackage,
CreatePackageBody,
CreateProcedure,
CreateRole,
CreateSequence,
Expand Down Expand Up @@ -90,6 +93,8 @@ public enum SqlStatementType
Open,
Prepare,
RecreateFunction,
RecreatePackage,
RecreatePackageBody,
RecreateProcedure,
RecreateTable,
RecreateTrigger,
Expand Down

0 comments on commit 9994749

Please sign in to comment.