From a2a49c019b134f5ccf1ce56f8acfb8edcba124a7 Mon Sep 17 00:00:00 2001 From: Jiri Cincura Date: Fri, 27 Jul 2018 12:26:31 +0200 Subject: [PATCH] Support for DROP PACKAGE/DROP PACKAGE BODY (DNET-838, DNET-839) --- .../FbScriptTests.cs | 22 +++++++++++++++++++ .../Isql/FbBatchExecution.cs | 2 ++ .../Isql/FbScript.cs | 8 +++++++ .../Isql/SqlStatementType.cs | 2 ++ 4 files changed, 34 insertions(+) diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbScriptTests.cs b/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbScriptTests.cs index 1e33d544..46f4f8c9 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbScriptTests.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbScriptTests.cs @@ -267,6 +267,28 @@ public void RecreatePackageBody() Assert.AreEqual(SqlStatementType.RecreatePackageBody, script.Results[0].StatementType); } + [Test] + public void DropPackage() + { + const string text = +@"drop package p as begin end"; + FbScript script = new FbScript(text); + script.Parse(); + Assert.AreEqual(1, script.Results.Count()); + Assert.AreEqual(SqlStatementType.DropPackage, script.Results[0].StatementType); + } + + [Test] + public void DropPackageBody() + { + const string text = +@"drop package body p as begin end"; + FbScript script = new FbScript(text); + script.Parse(); + Assert.AreEqual(1, script.Results.Count()); + Assert.AreEqual(SqlStatementType.DropPackageBody, script.Results[0].StatementType); + } + [Test] public void Merge() { diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbBatchExecution.cs b/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbBatchExecution.cs index aa1595be..fe96a135 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbBatchExecution.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbBatchExecution.cs @@ -163,6 +163,8 @@ public void Execute(bool autoCommit = true) case SqlStatementType.DropFilter: case SqlStatementType.DropGenerator: case SqlStatementType.DropIndex: + case SqlStatementType.DropPackage: + case SqlStatementType.DropPackageBody: case SqlStatementType.DropProcedure: case SqlStatementType.DropSequence: case SqlStatementType.DropRole: diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs b/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs index cc084386..c6bf817d 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/FbScript.cs @@ -359,6 +359,14 @@ static bool IsSetTermStatement(string statement, out string newTerm) { return SqlStatementType.DropIndex; } + if (sqlStatement.StartsWith("DROP PACKAGE BODY", StringComparison.OrdinalIgnoreCase)) + { + return SqlStatementType.DropPackageBody; + } + if (sqlStatement.StartsWith("DROP PACKAGE", StringComparison.OrdinalIgnoreCase)) + { + return SqlStatementType.DropPackage; + } if (sqlStatement.StartsWith("DROP PROCEDURE", StringComparison.OrdinalIgnoreCase)) { return SqlStatementType.DropProcedure; diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/SqlStatementType.cs b/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/SqlStatementType.cs index 44432661..94a197b2 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/SqlStatementType.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient/Isql/SqlStatementType.cs @@ -72,6 +72,8 @@ public enum SqlStatementType DropFilter, DropGenerator, DropIndex, + DropPackage, + DropPackageBody, DropProcedure, DropSequence, DropRole,