Skip to content

Commit 2677413

Browse files
committed
Merge branch 'master' into REL_2_5
2 parents e918bae + 3d7b9f0 commit 2677413

File tree

4 files changed

+41
-64
lines changed

4 files changed

+41
-64
lines changed

.travis.yml

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ env:
3737
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=OFF MODE=archive
3838
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=REL_13_STABLE MODE=backup
3939
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=REL_13_STABLE MODE=catchup
40+
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=REL_13_STABLE MODE=checkdb
4041
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=OFF MODE=compression
4142
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=OFF MODE=delta
4243
# - PG_VERSION=13 PG_BRANCH=REL_13_STABLE PTRACK_PATCH_PG_BRANCH=OFF MODE=locking
@@ -52,6 +53,7 @@ env:
5253
jobs:
5354
allow_failures:
5455
- if: env(PG_BRANCH) = master
56+
- if: env(PG_BRANCH) = REL_15_STABLE
5557
- if: env(PG_BRANCH) = REL9_5_STABLE
5658
# - if: env(MODE) IN (archive, backup, delta, locking, merge, replica, retention, restore)
5759

tests/backup.py

+18-40
Original file line numberDiff line numberDiff line change
@@ -1889,8 +1889,7 @@ def test_backup_with_least_privileges_role(self):
18891889
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean) TO backup; "
18901890
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup() TO backup; "
18911891
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1892-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
1893-
)
1892+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
18941893
# PG 9.6
18951894
elif self.get_version(node) > 90600 and self.get_version(node) < 100000:
18961895
node.safe_psql(
@@ -1928,9 +1927,7 @@ def test_backup_with_least_privileges_role(self):
19281927
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
19291928
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
19301929
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1931-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
1932-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
1933-
)
1930+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
19341931
# >= 10
19351932
else:
19361933
node.safe_psql(
@@ -1967,9 +1964,7 @@ def test_backup_with_least_privileges_role(self):
19671964
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
19681965
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
19691966
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1970-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
1971-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
1972-
)
1967+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
19731968

19741969
if self.ptrack:
19751970
node.safe_psql(
@@ -1982,10 +1977,10 @@ def test_backup_with_least_privileges_role(self):
19821977
"GRANT EXECUTE ON FUNCTION ptrack.ptrack_init_lsn() TO backup;")
19831978

19841979
if ProbackupTest.enterprise:
1985-
19861980
node.safe_psql(
19871981
"backupdb",
1988-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup")
1982+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup; "
1983+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;")
19891984

19901985
# FULL backup
19911986
self.backup_node(
@@ -2245,7 +2240,6 @@ def test_backup_with_less_privileges_role(self):
22452240
if self.get_version(node) < 90600:
22462241
node.safe_psql(
22472242
'backupdb',
2248-
"BEGIN; "
22492243
"CREATE ROLE backup WITH LOGIN; "
22502244
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
22512245
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
@@ -2256,14 +2250,11 @@ def test_backup_with_less_privileges_role(self):
22562250
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
22572251
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup; "
22582252
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
2259-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
2260-
"COMMIT;"
2261-
)
2253+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
22622254
# PG 9.6
22632255
elif self.get_version(node) > 90600 and self.get_version(node) < 100000:
22642256
node.safe_psql(
22652257
'backupdb',
2266-
"BEGIN; "
22672258
"CREATE ROLE backup WITH LOGIN; "
22682259
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
22692260
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
@@ -2275,14 +2266,11 @@ def test_backup_with_less_privileges_role(self):
22752266
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
22762267
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup; "
22772268
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
2278-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
2279-
"COMMIT;"
2280-
)
2269+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
22812270
# >= 10
22822271
else:
22832272
node.safe_psql(
22842273
'backupdb',
2285-
"BEGIN; "
22862274
"CREATE ROLE backup WITH LOGIN; "
22872275
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
22882276
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
@@ -2294,9 +2282,7 @@ def test_backup_with_less_privileges_role(self):
22942282
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
22952283
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup; "
22962284
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
2297-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
2298-
"COMMIT;"
2299-
)
2285+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
23002286

23012287
# enable STREAM backup
23022288
node.safe_psql(
@@ -3067,9 +3053,7 @@ def test_missing_replication_permission(self):
30673053
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
30683054
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
30693055
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3070-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3071-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
3072-
)
3056+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
30733057
# >= 10
30743058
else:
30753059
node.safe_psql(
@@ -3091,15 +3075,14 @@ def test_missing_replication_permission(self):
30913075
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
30923076
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
30933077
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3094-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3095-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
3096-
)
3078+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
30973079

30983080
if ProbackupTest.enterprise:
30993081
node.safe_psql(
31003082
"backupdb",
3101-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup")
3102-
3083+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup; "
3084+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;")
3085+
31033086
sleep(2)
31043087
replica.promote()
31053088

@@ -3177,8 +3160,7 @@ def test_missing_replication_permission_1(self):
31773160
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean) TO backup; "
31783161
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup() TO backup; "
31793162
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3180-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3181-
)
3163+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
31823164
# PG 9.6
31833165
elif self.get_version(node) > 90600 and self.get_version(node) < 100000:
31843166
node.safe_psql(
@@ -3201,9 +3183,7 @@ def test_missing_replication_permission_1(self):
32013183
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
32023184
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
32033185
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3204-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3205-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
3206-
)
3186+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
32073187
# >= 10
32083188
else:
32093189
node.safe_psql(
@@ -3225,15 +3205,13 @@ def test_missing_replication_permission_1(self):
32253205
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
32263206
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
32273207
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3228-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3229-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
3230-
3231-
)
3208+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
32323209

32333210
if ProbackupTest.enterprise:
32343211
node.safe_psql(
32353212
"backupdb",
3236-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup")
3213+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup; "
3214+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;")
32373215

32383216
replica.promote()
32393217

tests/checkdb.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -666,8 +666,8 @@ def test_checkdb_with_least_privileges(self):
666666
'GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; '
667667
'GRANT EXECUTE ON FUNCTION pg_catalog.string_to_array(text, text) TO backup; '
668668
'GRANT EXECUTE ON FUNCTION pg_catalog.array_position(anyarray, anyelement) TO backup; '
669-
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;' # amcheck-next function
670-
)
669+
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;') # amcheck-next function
670+
671671
# PG 9.6
672672
elif self.get_version(node) > 90600 and self.get_version(node) < 100000:
673673
node.safe_psql(
@@ -696,9 +696,8 @@ def test_checkdb_with_least_privileges(self):
696696
'GRANT EXECUTE ON FUNCTION pg_catalog.string_to_array(text, text) TO backup; '
697697
'GRANT EXECUTE ON FUNCTION pg_catalog.array_position(anyarray, anyelement) TO backup; '
698698
# 'GRANT EXECUTE ON FUNCTION bt_index_check(regclass) TO backup; '
699-
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;'
700-
'GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup; '
701-
)
699+
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;')
700+
702701
# PG 10
703702
elif self.get_version(node) > 100000 and self.get_version(node) < 110000:
704703
node.safe_psql(
@@ -726,10 +725,8 @@ def test_checkdb_with_least_privileges(self):
726725
'GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_system() TO backup; '
727726
'GRANT EXECUTE ON FUNCTION pg_catalog.string_to_array(text, text) TO backup; '
728727
'GRANT EXECUTE ON FUNCTION pg_catalog.array_position(anyarray, anyelement) TO backup;'
729-
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass) TO backup; '
730-
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;'
731-
'GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup; '
732-
)
728+
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass) TO backup;')
729+
733730
if ProbackupTest.enterprise:
734731
# amcheck-1.1
735732
node.safe_psql(
@@ -768,9 +765,8 @@ def test_checkdb_with_least_privileges(self):
768765
'GRANT EXECUTE ON FUNCTION pg_catalog.string_to_array(text, text) TO backup; '
769766
'GRANT EXECUTE ON FUNCTION pg_catalog.array_position(anyarray, anyelement) TO backup; '
770767
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass) TO backup; '
771-
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;'
772-
'GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup; '
773-
)
768+
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;')
769+
774770
# checkunique parameter
775771
if ProbackupTest.enterprise:
776772
if (self.get_version(node) >= 111300 and self.get_version(node) < 120000
@@ -807,15 +803,20 @@ def test_checkdb_with_least_privileges(self):
807803
'GRANT EXECUTE ON FUNCTION pg_catalog.string_to_array(text, text) TO backup; '
808804
'GRANT EXECUTE ON FUNCTION pg_catalog.array_position(anycompatiblearray, anycompatible) TO backup; '
809805
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass) TO backup; '
810-
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;'
811-
'GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup; '
812-
)
806+
'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup;')
807+
813808
# checkunique parameter
814809
if ProbackupTest.enterprise:
815810
node.safe_psql(
816811
"backupdb",
817812
"GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool, bool) TO backup")
818813

814+
if ProbackupTest.enterprise:
815+
node.safe_psql(
816+
'backupdb',
817+
'GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup; '
818+
'GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;')
819+
819820
# checkdb
820821
try:
821822
self.checkdb_node(

tests/restore.py

+5-9
Original file line numberDiff line numberDiff line change
@@ -3230,8 +3230,7 @@ def test_missing_database_map(self):
32303230
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean) TO backup; "
32313231
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup() TO backup; "
32323232
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3233-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3234-
)
3233+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
32353234
# PG 9.6
32363235
elif self.get_version(node) > 90600 and self.get_version(node) < 100000:
32373236
node.safe_psql(
@@ -3269,9 +3268,7 @@ def test_missing_database_map(self):
32693268
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
32703269
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
32713270
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3272-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3273-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
3274-
)
3271+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
32753272
# >= 10
32763273
else:
32773274
node.safe_psql(
@@ -3307,9 +3304,7 @@ def test_missing_database_map(self):
33073304
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
33083305
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
33093306
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3310-
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3311-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;"
3312-
)
3307+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;")
33133308

33143309
if self.ptrack:
33153310
# TODO why backup works without these grants ?
@@ -3326,7 +3321,8 @@ def test_missing_database_map(self):
33263321

33273322
node.safe_psql(
33283323
"backupdb",
3329-
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup")
3324+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_version() TO backup; "
3325+
"GRANT EXECUTE ON FUNCTION pg_catalog.pgpro_edition() TO backup;")
33303326

33313327
# FULL backup without database_map
33323328
backup_id = self.backup_node(

0 commit comments

Comments
 (0)