@@ -2020,17 +2020,17 @@ def test_backup_with_least_privileges_role(self):
2020
2020
"GRANT SELECT ON TABLE pg_catalog.pg_proc TO backup; "
2021
2021
"GRANT SELECT ON TABLE pg_catalog.pg_extension TO backup; "
2022
2022
"GRANT SELECT ON TABLE pg_catalog.pg_database TO backup; " # for partial restore, checkdb and ptrack
2023
+ "GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup; "
2023
2024
"GRANT EXECUTE ON FUNCTION pg_catalog.nameeq(name, name) TO backup; "
2024
2025
"GRANT EXECUTE ON FUNCTION pg_catalog.textout(text) TO backup; "
2025
2026
"GRANT EXECUTE ON FUNCTION pg_catalog.timestamptz(timestamp with time zone, integer) TO backup; "
2026
2027
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
2028
+ "GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup; "
2027
2029
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
2028
2030
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean) TO backup; "
2029
2031
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup() TO backup; "
2030
2032
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
2031
- "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
2032
- "GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup; "
2033
- "GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup;"
2033
+ "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
2034
2034
)
2035
2035
# PG 9.6
2036
2036
elif self .get_version (node )> 90600 and self .get_version (node )< 100000 :
@@ -2055,10 +2055,12 @@ def test_backup_with_least_privileges_role(self):
2055
2055
"GRANT SELECT ON TABLE pg_catalog.pg_extension TO backup; "
2056
2056
"GRANT SELECT ON TABLE pg_catalog.pg_proc TO backup; "
2057
2057
"GRANT SELECT ON TABLE pg_catalog.pg_database TO backup; " # for partial restore, checkdb and ptrack
2058
+ "GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup; "
2058
2059
"GRANT EXECUTE ON FUNCTION pg_catalog.nameeq(name, name) TO backup; "
2059
2060
"GRANT EXECUTE ON FUNCTION pg_catalog.textout(text) TO backup; "
2060
2061
"GRANT EXECUTE ON FUNCTION pg_catalog.timestamptz(timestamp with time zone, integer) TO backup; "
2061
2062
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
2063
+ "GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup; "
2062
2064
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
2063
2065
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_system() TO backup; "
2064
2066
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup; "
@@ -2067,9 +2069,7 @@ def test_backup_with_least_privileges_role(self):
2067
2069
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
2068
2070
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
2069
2071
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
2070
- "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
2071
- "GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup; "
2072
- "GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup;"
2072
+ "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
2073
2073
)
2074
2074
# >= 10
2075
2075
else :
@@ -2095,8 +2095,10 @@ def test_backup_with_least_privileges_role(self):
2095
2095
"GRANT SELECT ON TABLE pg_catalog.pg_proc TO backup; "
2096
2096
"GRANT SELECT ON TABLE pg_catalog.pg_extension TO backup; "
2097
2097
"GRANT SELECT ON TABLE pg_catalog.pg_database TO backup; " # for partial restore, checkdb and ptrack
2098
+ "GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup; "
2098
2099
"GRANT EXECUTE ON FUNCTION pg_catalog.nameeq(name, name) TO backup; "
2099
2100
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
2101
+ "GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup; "
2100
2102
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
2101
2103
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_system() TO backup; "
2102
2104
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup; "
@@ -2105,9 +2107,7 @@ def test_backup_with_least_privileges_role(self):
2105
2107
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
2106
2108
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
2107
2109
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
2108
- "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
2109
- "GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup; "
2110
- "GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup;"
2110
+ "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
2111
2111
)
2112
2112
2113
2113
if self .ptrack :
@@ -3321,7 +3321,7 @@ def test_missing_replication_permission_1(self):
3321
3321
if self .get_version (node )< 90600 :
3322
3322
node .safe_psql (
3323
3323
'backupdb' ,
3324
- "CREATE ROLE backup WITH LOGIN REPLICATION ; "
3324
+ "CREATE ROLE backup WITH LOGIN; "
3325
3325
"GRANT CONNECT ON DATABASE backupdb to backup; "
3326
3326
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
3327
3327
"GRANT SELECT ON TABLE pg_catalog.pg_proc TO backup; "
@@ -3335,7 +3335,8 @@ def test_missing_replication_permission_1(self):
3335
3335
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean) TO backup; "
3336
3336
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup() TO backup; "
3337
3337
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3338
- "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;" )
3338
+ "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3339
+ )
3339
3340
# PG 9.6
3340
3341
elif self .get_version (node )> 90600 and self .get_version (node )< 100000 :
3341
3342
node .safe_psql (
@@ -3358,7 +3359,8 @@ def test_missing_replication_permission_1(self):
3358
3359
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
3359
3360
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
3360
3361
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3361
- "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;" )
3362
+ "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3363
+ )
3362
3364
# >= 10
3363
3365
else :
3364
3366
node .safe_psql (
@@ -3380,7 +3382,8 @@ def test_missing_replication_permission_1(self):
3380
3382
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
3381
3383
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
3382
3384
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
3383
- "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;" )
3385
+ "GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
3386
+ )
3384
3387
3385
3388
if ProbackupTest .enterprise :
3386
3389
node .safe_psql (