diff --git a/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs b/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs index 96f38823..b0e9e483 100644 --- a/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs +++ b/src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs @@ -60,6 +60,22 @@ public async Task BackupRestoreTest() await Connection.CloseAsync(); } + [Test] + public async Task BackupRestoreZipTest() + { + if (!EnsureServerVersionAtLeast(new Version(4, 0, 0, 0))) + return; + + var backupName = $"{Guid.NewGuid()}.bak"; + var csb = BuildServicesConnectionStringBuilder(ServerType, Compression, WireCrypt, true); + var connectionString = csb.ToString(); + await BackupPartHelper(backupName, connectionString, FbBackupFlags.Zip); + await RestorePartHelper(backupName, connectionString); + // test the database was actually restored fine + await Connection.OpenAsync(); + await Connection.CloseAsync(); + } + [Test] public async Task BackupRestoreParallelTest() { @@ -453,11 +469,11 @@ public async Task NFixupTest() Assert.DoesNotThrowAsync(() => Connection.OpenAsync()); } - static Task BackupPartHelper(string backupName, string connectionString) + static Task BackupPartHelper(string backupName, string connectionString, FbBackupFlags backupFlags = FbBackupFlags.IgnoreLimbo) { var backupSvc = new FbBackup(); backupSvc.ConnectionString = connectionString; - backupSvc.Options = FbBackupFlags.IgnoreLimbo; + backupSvc.Options = backupFlags; backupSvc.BackupFiles.Add(new FbBackupFile(backupName, 2048)); backupSvc.Verbose = true; backupSvc.Statistics = FbBackupRestoreStatistics.TotalTime | FbBackupRestoreStatistics.TimeDelta; diff --git a/src/FirebirdSql.Data.FirebirdClient/Services/FbBackupFlags.cs b/src/FirebirdSql.Data.FirebirdClient/Services/FbBackupFlags.cs index 73bb8873..1c17c9f3 100644 --- a/src/FirebirdSql.Data.FirebirdClient/Services/FbBackupFlags.cs +++ b/src/FirebirdSql.Data.FirebirdClient/Services/FbBackupFlags.cs @@ -33,4 +33,5 @@ public enum FbBackupFlags Convert = IscCodes.isc_spb_bkp_convert, Expand = IscCodes.isc_spb_bkp_expand, NoDatabaseTriggers = IscCodes.isc_spb_bkp_no_triggers, + Zip = IscCodes.isc_spb_bkp_zip, }