Skip to content

Commit d0ceaca

Browse files
committed
Merge tag '2.0.13' into stable
2 parents 60ad981 + b4c56bf commit d0ceaca

File tree

13 files changed

+357
-198
lines changed

13 files changed

+357
-198
lines changed

src/backup.c

Lines changed: 135 additions & 138 deletions
Large diffs are not rendered by default.

src/dir.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ static char *pgdata_exclude_files[] =
7575
"recovery.conf",
7676
"postmaster.pid",
7777
"postmaster.opts",
78+
"backup_label",
79+
"tablespace_map",
7880
NULL
7981
};
8082

@@ -149,7 +151,7 @@ pgFileInit(const char *path)
149151
file->is_datafile = false;
150152
file->linked = NULL;
151153
file->pagemap.bitmap = NULL;
152-
file->pagemap.bitmapsize = PageBitmapIsAbsent;
154+
file->pagemap.bitmapsize = (current.backup_mode == BACKUP_MODE_DIFF_PAGE) ? PageBitmapIsEmpty : PageBitmapIsAbsent;
153155
file->tblspcOid = 0;
154156
file->dbOid = 0;
155157
file->relOid = 0;

src/pg_probackup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#include <sys/stat.h>
1818
#include <unistd.h>
1919

20-
const char *PROGRAM_VERSION = "2.0.12";
20+
const char *PROGRAM_VERSION = "2.0.13";
2121
const char *PROGRAM_URL = "https://github.com/postgrespro/pg_probackup";
2222
const char *PROGRAM_EMAIL = "https://github.com/postgrespro/pg_probackup/issues";
2323

src/utils/pgut.c

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,7 @@ pgut_set_port(const char *new_port)
12891289
}
12901290

12911291
PGresult *
1292-
pgut_execute(PGconn* conn, const char *query, int nParams, const char **params)
1292+
pgut_execute(PGconn* conn, const char *query, int nParams, const char **params, bool exit_on_error)
12931293
{
12941294
PGresult *res;
12951295

@@ -1322,16 +1322,19 @@ pgut_execute(PGconn* conn, const char *query, int nParams, const char **params)
13221322
res = PQexecParams(conn, query, nParams, NULL, params, NULL, NULL, 0);
13231323
on_after_exec();
13241324

1325-
switch (PQresultStatus(res))
1325+
if (exit_on_error)
13261326
{
1327-
case PGRES_TUPLES_OK:
1328-
case PGRES_COMMAND_OK:
1329-
case PGRES_COPY_IN:
1330-
break;
1331-
default:
1332-
elog(ERROR, "query failed: %squery was: %s",
1333-
PQerrorMessage(conn), query);
1334-
break;
1327+
switch (PQresultStatus(res))
1328+
{
1329+
case PGRES_TUPLES_OK:
1330+
case PGRES_COMMAND_OK:
1331+
case PGRES_COPY_IN:
1332+
break;
1333+
default:
1334+
elog(ERROR, "query failed: %squery was: %s",
1335+
PQerrorMessage(conn), query);
1336+
break;
1337+
}
13351338
}
13361339

13371340
return res;

src/utils/pgut.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ extern PGconn *pgut_connect_replication_extended(const char *pghost, const char
124124
const char *dbname, const char *login,
125125
const char *pwd);
126126
extern void pgut_disconnect(PGconn *conn);
127-
extern PGresult *pgut_execute(PGconn* conn, const char *query, int nParams, const char **params);
127+
extern PGresult *pgut_execute(PGconn* conn, const char *query, int nParams, const char **params, bool exit_on_error);
128128
extern bool pgut_send(PGconn* conn, const char *query, int nParams, const char **params, int elevel);
129129
extern void pgut_cancel(PGconn* conn);
130130
extern int pgut_wait(int num, PGconn *connections[], struct timeval *timeout);

tests/__init__.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,24 @@
77
ptrack_vacuum_bits_frozen, ptrack_vacuum_bits_visibility, \
88
ptrack_vacuum_full, ptrack_vacuum_truncate, pgpro560, pgpro589, \
99
false_positive, replica, compression, page, ptrack, archive, \
10-
cfs_backup, cfs_restore, cfs_validate_backup
10+
exclude, cfs_backup, cfs_restore, cfs_validate_backup
1111

1212

1313
def load_tests(loader, tests, pattern):
1414
suite = unittest.TestSuite()
15-
suite.addTests(loader.loadTestsFromModule(init_test))
16-
suite.addTests(loader.loadTestsFromModule(option_test))
17-
suite.addTests(loader.loadTestsFromModule(show_test))
15+
suite.addTests(loader.loadTestsFromModule(archive))
1816
suite.addTests(loader.loadTestsFromModule(backup_test))
17+
# suite.addTests(loader.loadTestsFromModule(cfs_backup))
18+
# suite.addTests(loader.loadTestsFromModule(cfs_restore))
19+
# suite.addTests(loader.loadTestsFromModule(cfs_validate_backup))
20+
# suite.addTests(loader.loadTestsFromModule(logging))
21+
suite.addTests(loader.loadTestsFromModule(compression))
1922
suite.addTests(loader.loadTestsFromModule(delete_test))
20-
suite.addTests(loader.loadTestsFromModule(restore_test))
21-
suite.addTests(loader.loadTestsFromModule(validate_test))
22-
suite.addTests(loader.loadTestsFromModule(retention_test))
23+
suite.addTests(loader.loadTestsFromModule(exclude))
24+
suite.addTests(loader.loadTestsFromModule(false_positive))
25+
suite.addTests(loader.loadTestsFromModule(init_test))
26+
suite.addTests(loader.loadTestsFromModule(option_test))
27+
suite.addTests(loader.loadTestsFromModule(page))
2328
suite.addTests(loader.loadTestsFromModule(ptrack))
2429
suite.addTests(loader.loadTestsFromModule(ptrack_clean))
2530
suite.addTests(loader.loadTestsFromModule(ptrack_cluster))
@@ -31,15 +36,12 @@ def load_tests(loader, tests, pattern):
3136
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum_full))
3237
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum_truncate))
3338
suite.addTests(loader.loadTestsFromModule(replica))
39+
suite.addTests(loader.loadTestsFromModule(restore_test))
40+
suite.addTests(loader.loadTestsFromModule(retention_test))
41+
suite.addTests(loader.loadTestsFromModule(show_test))
42+
suite.addTests(loader.loadTestsFromModule(validate_test))
3443
suite.addTests(loader.loadTestsFromModule(pgpro560))
3544
suite.addTests(loader.loadTestsFromModule(pgpro589))
36-
suite.addTests(loader.loadTestsFromModule(false_positive))
37-
suite.addTests(loader.loadTestsFromModule(compression))
38-
suite.addTests(loader.loadTestsFromModule(page))
39-
suite.addTests(loader.loadTestsFromModule(archive))
40-
# suite.addTests(loader.loadTestsFromModule(cfs_backup))
41-
# suite.addTests(loader.loadTestsFromModule(cfs_restore))
42-
# suite.addTests(loader.loadTestsFromModule(cfs_validate_backup))
4345

4446
return suite
4547

tests/backup_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def test_smooth_checkpoint(self):
9393
# Clean after yourself
9494
self.del_test_dir(module_name, fname)
9595

96-
#@unittest.skip("skip")
96+
# @unittest.skip("skip")
9797
def test_incremental_backup_without_full(self):
9898
"""page-level backup without validated full backup"""
9999
fname = self.id().split('.')[3]
@@ -134,7 +134,7 @@ def test_incremental_backup_without_full(self):
134134
# Clean after yourself
135135
self.del_test_dir(module_name, fname)
136136

137-
# @unittest.expectedFailure
137+
# @unittest.skip("skip")
138138
def test_incremental_backup_corrupt_full(self):
139139
"""page-level backup with corrupted full backup"""
140140
fname = self.id().split('.')[3]

tests/cfs_backup.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def test_fullbackup_after_create_table(self):
151151
"ERROR: .cfm files not found in backup dir"
152152
)
153153

154-
@unittest.expectedFailure
154+
# @unittest.expectedFailure
155155
# @unittest.skip("skip")
156156
# PGPRO-1018 invalid file size
157157
def test_fullbackup_after_create_table_stream(self):
@@ -193,7 +193,7 @@ def test_fullbackup_after_create_table_stream(self):
193193
)
194194

195195
# --- Section: Incremental from empty tablespace --- #
196-
@unittest.expectedFailure
196+
# @unittest.expectedFailure
197197
# @unittest.skip("skip")
198198
def test_fullbackup_empty_tablespace_ptrack_after_create_table(self):
199199
"""
@@ -244,7 +244,7 @@ def test_fullbackup_empty_tablespace_ptrack_after_create_table(self):
244244
"ERROR: .cfm files not found in backup dir"
245245
)
246246

247-
@unittest.expectedFailure
247+
# @unittest.expectedFailure
248248
# @unittest.skip("skip")
249249
def test_fullbackup_empty_tablespace_ptrack_after_create_table_stream(self):
250250
"""
@@ -406,7 +406,7 @@ def test_fullbackup_empty_tablespace_page_after_create_table_stream(self):
406406
)
407407

408408
# --- Section: Incremental from fill tablespace --- #
409-
@unittest.expectedFailure
409+
# @unittest.expectedFailure
410410
# @unittest.skip("skip")
411411
def test_fullbackup_after_create_table_ptrack_after_create_table(self):
412412
"""
@@ -464,7 +464,7 @@ def test_fullbackup_after_create_table_ptrack_after_create_table(self):
464464
)
465465
)
466466

467-
@unittest.expectedFailure
467+
# @unittest.expectedFailure
468468
# @unittest.skip("skip")
469469
def test_fullbackup_after_create_table_ptrack_after_create_table_stream(self):
470470
"""
@@ -822,7 +822,7 @@ def test_fullbackup_after_create_table_page_after_create_table_stream(self):
822822
)
823823

824824
# --- Make backup with not valid data(broken .cfm) --- #
825-
@unittest.expectedFailure
825+
# @unittest.expectedFailure
826826
# @unittest.skip("skip")
827827
def test_delete_random_cfm_file_from_tablespace_dir(self):
828828
self.node.safe_psql(
@@ -846,7 +846,7 @@ def test_delete_random_cfm_file_from_tablespace_dir(self):
846846
self.backup_node,self.backup_dir, 'node', self.node, backup_type='full'
847847
)
848848

849-
@unittest.expectedFailure
849+
# @unittest.expectedFailure
850850
# @unittest.skip("skip")
851851
def test_delete_file_pg_compression_from_tablespace_dir(self):
852852
os.remove(find_by_name([self.get_tblspace_path(self.node, tblspace_name)], ['pg_compression'])[0])
@@ -856,7 +856,7 @@ def test_delete_file_pg_compression_from_tablespace_dir(self):
856856
self.backup_node,self.backup_dir, 'node', self.node, backup_type='full'
857857
)
858858

859-
@unittest.expectedFailure
859+
# @unittest.expectedFailure
860860
# @unittest.skip("skip")
861861
def test_delete_random_data_file_from_tablespace_dir(self):
862862
self.node.safe_psql(
@@ -880,7 +880,7 @@ def test_delete_random_data_file_from_tablespace_dir(self):
880880
self.backup_node,self.backup_dir, 'node', self.node, backup_type='full'
881881
)
882882

883-
@unittest.expectedFailure
883+
# @unittest.expectedFailure
884884
# @unittest.skip("skip")
885885
def test_broken_random_cfm_file_into_tablespace_dir(self):
886886
self.node.safe_psql(
@@ -904,7 +904,7 @@ def test_broken_random_cfm_file_into_tablespace_dir(self):
904904
self.backup_node,self.backup_dir, 'node', self.node, backup_type='full'
905905
)
906906

907-
@unittest.expectedFailure
907+
# @unittest.expectedFailure
908908
# @unittest.skip("skip")
909909
def test_broken_random_data_file_into_tablespace_dir(self):
910910
self.node.safe_psql(
@@ -928,7 +928,7 @@ def test_broken_random_data_file_into_tablespace_dir(self):
928928
self.backup_node,self.backup_dir, 'node', self.node, backup_type='full'
929929
)
930930

931-
@unittest.expectedFailure
931+
# @unittest.expectedFailure
932932
# @unittest.skip("skip")
933933
def test_broken_file_pg_compression_into_tablespace_dir(self):
934934

tests/class_check1.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)