Skip to content

Commit 9994749

Browse files
committed
FbScript support for packages (DNET-834, DNET-835)
1 parent b8fec2d commit 9994749

File tree

4 files changed

+77
-0
lines changed

4 files changed

+77
-0
lines changed

Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbScriptTests.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,50 @@ public void ManuallySettingStatementType()
223223
Assert.AreEqual(SqlStatementType.CreateDatabase, script.Results[0].StatementType);
224224
}
225225

226+
[Test]
227+
public void CreatePackage()
228+
{
229+
const string text =
230+
@"create package p as begin end";
231+
FbScript script = new FbScript(text);
232+
script.Parse();
233+
Assert.AreEqual(1, script.Results.Count());
234+
Assert.AreEqual(SqlStatementType.CreatePackage, script.Results[0].StatementType);
235+
}
236+
237+
[Test]
238+
public void RecreatePackage()
239+
{
240+
const string text =
241+
@"recreate package p as begin end";
242+
FbScript script = new FbScript(text);
243+
script.Parse();
244+
Assert.AreEqual(1, script.Results.Count());
245+
Assert.AreEqual(SqlStatementType.RecreatePackage, script.Results[0].StatementType);
246+
}
247+
248+
[Test]
249+
public void CreatePackageBody()
250+
{
251+
const string text =
252+
@"create package body p as begin end";
253+
FbScript script = new FbScript(text);
254+
script.Parse();
255+
Assert.AreEqual(1, script.Results.Count());
256+
Assert.AreEqual(SqlStatementType.CreatePackageBody, script.Results[0].StatementType);
257+
}
258+
259+
[Test]
260+
public void RecreatePackageBody()
261+
{
262+
const string text =
263+
@"recreate package body p as begin end";
264+
FbScript script = new FbScript(text);
265+
script.Parse();
266+
Assert.AreEqual(1, script.Results.Count());
267+
Assert.AreEqual(SqlStatementType.RecreatePackageBody, script.Results[0].StatementType);
268+
}
269+
226270
#endregion
227271
}
228272
}

Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbBatchExecution.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ public void Execute(bool autoCommit = true)
126126
case SqlStatementType.AlterException:
127127
case SqlStatementType.AlterFunction:
128128
case SqlStatementType.AlterIndex:
129+
case SqlStatementType.AlterPackage:
129130
case SqlStatementType.AlterProcedure:
130131
case SqlStatementType.AlterRole:
131132
case SqlStatementType.AlterSequence:
@@ -139,6 +140,8 @@ public void Execute(bool autoCommit = true)
139140
case SqlStatementType.CreateFunction:
140141
case SqlStatementType.CreateGenerator:
141142
case SqlStatementType.CreateIndex:
143+
case SqlStatementType.CreatePackage:
144+
case SqlStatementType.CreatePackageBody:
142145
case SqlStatementType.CreateProcedure:
143146
case SqlStatementType.CreateRole:
144147
case SqlStatementType.CreateSequence:
@@ -179,6 +182,8 @@ public void Execute(bool autoCommit = true)
179182
case SqlStatementType.Prepare:
180183
case SqlStatementType.Revoke:
181184
case SqlStatementType.RecreateFunction:
185+
case SqlStatementType.RecreatePackage:
186+
case SqlStatementType.RecreatePackageBody:
182187
case SqlStatementType.RecreateProcedure:
183188
case SqlStatementType.RecreateTable:
184189
case SqlStatementType.RecreateTrigger:

Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ static bool IsSetTermStatement(string statement, out string newTerm)
156156
{
157157
return SqlStatementType.AlterIndex;
158158
}
159+
if (sqlStatement.StartsWith("ALTER PACKAGE", StringComparison.OrdinalIgnoreCase))
160+
{
161+
return SqlStatementType.AlterPackage;
162+
}
159163
if (sqlStatement.StartsWith("ALTER PROCEDURE", StringComparison.OrdinalIgnoreCase))
160164
{
161165
return SqlStatementType.AlterProcedure;
@@ -234,6 +238,16 @@ static bool IsSetTermStatement(string statement, out string newTerm)
234238
{
235239
return SqlStatementType.CreateIndex;
236240
}
241+
// this needs to be before CREATE PACKAGE to properly match
242+
if (sqlStatement.StartsWith("CREATE PACKAGE BODY", StringComparison.OrdinalIgnoreCase))
243+
{
244+
return SqlStatementType.CreatePackageBody;
245+
}
246+
if (sqlStatement.StartsWith("CREATE PACKAGE", StringComparison.OrdinalIgnoreCase) ||
247+
sqlStatement.StartsWith("CREATE OR ALTER PACKAGE", StringComparison.OrdinalIgnoreCase))
248+
{
249+
return SqlStatementType.CreatePackage;
250+
}
237251
if (sqlStatement.StartsWith("CREATE PROCEDURE", StringComparison.OrdinalIgnoreCase) ||
238252
sqlStatement.StartsWith("CREATE OR ALTER PROCEDURE", StringComparison.OrdinalIgnoreCase))
239253
{
@@ -462,6 +476,15 @@ static bool IsSetTermStatement(string statement, out string newTerm)
462476
{
463477
return SqlStatementType.RecreateFunction;
464478
}
479+
// this needs to be before RECREATE PACKAGE to properly match
480+
if (sqlStatement.StartsWith("RECREATE PACKAGE BODY", StringComparison.OrdinalIgnoreCase))
481+
{
482+
return SqlStatementType.RecreatePackageBody;
483+
}
484+
if (sqlStatement.StartsWith("RECREATE PACKAGE", StringComparison.OrdinalIgnoreCase))
485+
{
486+
return SqlStatementType.RecreatePackage;
487+
}
465488
if (sqlStatement.StartsWith("RECREATE PROCEDURE", StringComparison.OrdinalIgnoreCase))
466489
{
467490
return SqlStatementType.RecreateProcedure;

Provider/src/FirebirdSql.Data.FirebirdClient/Isql/SqlStatementType.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public enum SqlStatementType
2828
AlterException,
2929
AlterFunction,
3030
AlterIndex,
31+
AlterPackage,
3132
AlterProcedure,
3233
AlterRole,
3334
AlterSequence,
@@ -45,6 +46,8 @@ public enum SqlStatementType
4546
CreateFunction,
4647
CreateGenerator,
4748
CreateIndex,
49+
CreatePackage,
50+
CreatePackageBody,
4851
CreateProcedure,
4952
CreateRole,
5053
CreateSequence,
@@ -90,6 +93,8 @@ public enum SqlStatementType
9093
Open,
9194
Prepare,
9295
RecreateFunction,
96+
RecreatePackage,
97+
RecreatePackageBody,
9398
RecreateProcedure,
9499
RecreateTable,
95100
RecreateTrigger,

0 commit comments

Comments
 (0)