@@ -600,7 +600,33 @@ def test_checkdb_with_least_privileges(self):
600600'GRANT EXECUTE ON FUNCTION bt_index_check(regclass, bool) TO backup; '
601601'GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup;'
602602 )
603- # >= 10
603+ # PG 10
604+ elif self .get_version (node )> 100000 and self .get_version (node )< 110000 :
605+ node .safe_psql (
606+ 'backupdb' ,
607+ 'CREATE ROLE backup WITH LOGIN; '
608+ 'GRANT CONNECT ON DATABASE backupdb to backup; '
609+ 'GRANT USAGE ON SCHEMA pg_catalog TO backup; '
610+ 'GRANT USAGE ON SCHEMA public TO backup; '
611+ 'GRANT SELECT ON TABLE pg_catalog.pg_proc TO backup; '
612+ 'GRANT SELECT ON TABLE pg_catalog.pg_extension TO backup; '
613+ 'GRANT SELECT ON TABLE pg_catalog.pg_database TO backup; '
614+ 'GRANT SELECT ON TABLE pg_catalog.pg_am TO backup; '
615+ 'GRANT SELECT ON TABLE pg_catalog.pg_class TO backup; '
616+ 'GRANT SELECT ON TABLE pg_catalog.pg_index TO backup; '
617+ 'GRANT SELECT ON TABLE pg_catalog.pg_namespace TO backup; '
618+ 'GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; '
619+ 'GRANT EXECUTE ON FUNCTION pg_catalog.nameeq(name, name) TO backup; '
620+ 'GRANT EXECUTE ON FUNCTION pg_catalog.namene(name, name) TO backup; '
621+ 'GRANT EXECUTE ON FUNCTION pg_catalog.int8(integer) TO backup; '
622+ 'GRANT EXECUTE ON FUNCTION pg_catalog.oideq(oid, oid) TO backup; '
623+ 'GRANT EXECUTE ON FUNCTION pg_catalog.charne("char", "char") TO backup; '
624+ 'GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; '
625+ 'GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_system() TO backup; '
626+ 'GRANT EXECUTE ON FUNCTION bt_index_check(regclass) TO backup; '
627+ 'GRANT EXECUTE ON FUNCTION pg_catalog.set_config(text, text, boolean) TO backup;'
628+ )
629+ # >= 11
604630else :
605631node .safe_psql (
606632'backupdb' ,