From 0c4522df2b1ee4958b10dd6f9ce8ac8b37da98d2 Mon Sep 17 00:00:00 2001 From: Jiri Cincura Date: Tue, 4 Sep 2018 08:31:12 +0200 Subject: [PATCH] Support for isc_spb_prp_nolinger (DNET-645). --- .../FbServicesTests.cs | 10 ++++++++++ .../Common/IscCodes.cs | 1 + .../Services/FbConfiguration.cs | 12 ++++++++++++ 3 files changed, 23 insertions(+) diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs b/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs index ce4ccf82..b924d976 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs @@ -396,6 +396,16 @@ public void TraceTest() Assert.AreNotEqual(-1, sessionId); } + [Test] + public void NoLingerTest() + { + var configurationSvc = new FbConfiguration(); + + configurationSvc.ConnectionString = BuildServicesConnectionString(FbServerType, Compression, true); + + configurationSvc.NoLinger(); + } + [Test, Explicit] public void StatisticsWithEncryptedTest() { diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient/Common/IscCodes.cs b/Provider/src/FirebirdSql.Data.FirebirdClient/Common/IscCodes.cs index ea197fe8..6b7a0026 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient/Common/IscCodes.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient/Common/IscCodes.cs @@ -437,6 +437,7 @@ internal static class IscCodes // Option Flags public const int isc_spb_prp_activate = 0x0100; public const int isc_spb_prp_db_online = 0x0200; + public const int isc_spb_prp_nolinger = 0x0400; #endregion diff --git a/Provider/src/FirebirdSql.Data.FirebirdClient/Services/FbConfiguration.cs b/Provider/src/FirebirdSql.Data.FirebirdClient/Services/FbConfiguration.cs index b6c14220..79e07f46 100644 --- a/Provider/src/FirebirdSql.Data.FirebirdClient/Services/FbConfiguration.cs +++ b/Provider/src/FirebirdSql.Data.FirebirdClient/Services/FbConfiguration.cs @@ -196,6 +196,18 @@ public void SetAccessMode(bool readOnly) Close(); } + public void NoLinger() + { + StartSpb = new ServiceParameterBuffer(); + StartSpb.Append(IscCodes.isc_action_svc_properties); + StartSpb.Append(IscCodes.isc_spb_dbname, Database); + StartSpb.Append(IscCodes.isc_spb_options, IscCodes.isc_spb_prp_nolinger); + + Open(); + StartTask(); + Close(); + } + byte FbShutdownOnlineModeToIscCode(FbShutdownOnlineMode mode) { switch (mode)