From: Andres Freund Date: Sun, 5 Apr 2026 19:36:34 +0000 (-0400) Subject: Fixups for a4f774cf1c7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6c7bce28c83f4deaa6a6205dc32e86ac1630182c;p=thirdparty%2Fpostgresql.git Fixups for a4f774cf1c7 The database name was warned about when building with -DENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS, leading to BF and CI failures. It is somewhat confusing that the required prefix is different for databases than other object types. Also fix a pgindent violation that caused koel to start to fail. Discussion: https://postgr.es/m/ptyiexyhmtxf4lm524s7o7w64r26ra237uusv4tjav4yhpmeoo@vfwwllz7tivb --- diff --git a/src/backend/utils/adt/ddlutils.c b/src/backend/utils/adt/ddlutils.c index 5ff15bc2cf1..b16c277d000 100644 --- a/src/backend/utils/adt/ddlutils.c +++ b/src/backend/utils/adt/ddlutils.c @@ -895,7 +895,7 @@ pg_get_database_ddl_internal(Oid dbid, bool pretty, ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("database \"%s\" is a system database", dbname), - errdetail("DDL generation is not supported for template0 and template1."))); + errdetail("DDL generation is not supported for template0 and template1."))); initStringInfo(&buf); diff --git a/src/test/regress/expected/database_ddl.out b/src/test/regress/expected/database_ddl.out index 5081c1a2b53..97657e52cfa 100644 --- a/src/test/regress/expected/database_ddl.out +++ b/src/test/regress/expected/database_ddl.out @@ -19,12 +19,12 @@ SELECT regexp_replace( '\s*\S*COLLATION\S*\s*=?\s*([''"])[^''"]*\1', '', 'gi') $$; CREATE ROLE regress_datdba; -CREATE DATABASE regress_database_ddl +CREATE DATABASE regression_database_ddl ENCODING utf8 LC_COLLATE "C" LC_CTYPE "C" TEMPLATE template0 OWNER regress_datdba; -ALTER DATABASE regress_database_ddl CONNECTION_LIMIT 123; -ALTER DATABASE regress_database_ddl SET random_page_cost = 2.0; -ALTER ROLE regress_datdba IN DATABASE regress_database_ddl SET random_page_cost = 1.1; +ALTER DATABASE regression_database_ddl CONNECTION_LIMIT 123; +ALTER DATABASE regression_database_ddl SET random_page_cost = 2.0; +ALTER ROLE regress_datdba IN DATABASE regression_database_ddl SET random_page_cost = 1.1; -- Database doesn't exist SELECT * FROM pg_get_database_ddl('regression_database'); ERROR: database "regression_database" does not exist @@ -37,52 +37,52 @@ SELECT * FROM pg_get_database_ddl(NULL); (0 rows) -- Invalid option value (should error) -SELECT * FROM pg_get_database_ddl('regress_database_ddl', 'owner', 'invalid'); +SELECT * FROM pg_get_database_ddl('regression_database_ddl', 'owner', 'invalid'); ERROR: invalid value for boolean option "owner": invalid -- Duplicate option (should error) -SELECT * FROM pg_get_database_ddl('regress_database_ddl', 'owner', 'false', 'owner', 'true'); +SELECT * FROM pg_get_database_ddl('regression_database_ddl', 'owner', 'false', 'owner', 'true'); ERROR: option "owner" is specified more than once -- Without options -SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regress_database_ddl'); - ddl_filter ------------------------------------------------------------------------------------ - CREATE DATABASE regress_database_ddl WITH TEMPLATE = template0 ENCODING = 'UTF8'; - ALTER DATABASE regress_database_ddl OWNER TO regress_datdba; - ALTER DATABASE regress_database_ddl CONNECTION LIMIT = 123; - ALTER DATABASE regress_database_ddl SET random_page_cost TO '2.0'; +SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regression_database_ddl'); + ddl_filter +-------------------------------------------------------------------------------------- + CREATE DATABASE regression_database_ddl WITH TEMPLATE = template0 ENCODING = 'UTF8'; + ALTER DATABASE regression_database_ddl OWNER TO regress_datdba; + ALTER DATABASE regression_database_ddl CONNECTION LIMIT = 123; + ALTER DATABASE regression_database_ddl SET random_page_cost TO '2.0'; (4 rows) -- With owner -SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regress_database_ddl', 'owner', 'true'); - ddl_filter ------------------------------------------------------------------------------------ - CREATE DATABASE regress_database_ddl WITH TEMPLATE = template0 ENCODING = 'UTF8'; - ALTER DATABASE regress_database_ddl OWNER TO regress_datdba; - ALTER DATABASE regress_database_ddl CONNECTION LIMIT = 123; - ALTER DATABASE regress_database_ddl SET random_page_cost TO '2.0'; +SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regression_database_ddl', 'owner', 'true'); + ddl_filter +-------------------------------------------------------------------------------------- + CREATE DATABASE regression_database_ddl WITH TEMPLATE = template0 ENCODING = 'UTF8'; + ALTER DATABASE regression_database_ddl OWNER TO regress_datdba; + ALTER DATABASE regression_database_ddl CONNECTION LIMIT = 123; + ALTER DATABASE regression_database_ddl SET random_page_cost TO '2.0'; (4 rows) -- Pretty-printed output \pset format unaligned -SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regress_database_ddl', 'pretty', 'true', 'tablespace', 'false'); +SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regression_database_ddl', 'pretty', 'true', 'tablespace', 'false'); ddl_filter -CREATE DATABASE regress_database_ddl +CREATE DATABASE regression_database_ddl WITH TEMPLATE = template0 ENCODING = 'UTF8'; -ALTER DATABASE regress_database_ddl OWNER TO regress_datdba; -ALTER DATABASE regress_database_ddl CONNECTION LIMIT = 123; -ALTER DATABASE regress_database_ddl SET random_page_cost TO '2.0'; +ALTER DATABASE regression_database_ddl OWNER TO regress_datdba; +ALTER DATABASE regression_database_ddl CONNECTION LIMIT = 123; +ALTER DATABASE regression_database_ddl SET random_page_cost TO '2.0'; (4 rows) \pset format aligned -- Permission check: revoke CONNECT on database CREATE ROLE regress_db_ddl_noaccess; -REVOKE CONNECT ON DATABASE regress_database_ddl FROM PUBLIC; +REVOKE CONNECT ON DATABASE regression_database_ddl FROM PUBLIC; SET ROLE regress_db_ddl_noaccess; -SELECT * FROM pg_get_database_ddl('regress_database_ddl'); -- should fail -ERROR: permission denied for database regress_database_ddl +SELECT * FROM pg_get_database_ddl('regression_database_ddl'); -- should fail +ERROR: permission denied for database regression_database_ddl RESET ROLE; -GRANT CONNECT ON DATABASE regress_database_ddl TO PUBLIC; +GRANT CONNECT ON DATABASE regression_database_ddl TO PUBLIC; DROP ROLE regress_db_ddl_noaccess; -DROP DATABASE regress_database_ddl; +DROP DATABASE regression_database_ddl; DROP FUNCTION ddl_filter(text); DROP ROLE regress_datdba; diff --git a/src/test/regress/sql/database_ddl.sql b/src/test/regress/sql/database_ddl.sql index 093ccc0029e..89753ac6411 100644 --- a/src/test/regress/sql/database_ddl.sql +++ b/src/test/regress/sql/database_ddl.sql @@ -22,12 +22,12 @@ SELECT regexp_replace( $$; CREATE ROLE regress_datdba; -CREATE DATABASE regress_database_ddl +CREATE DATABASE regression_database_ddl ENCODING utf8 LC_COLLATE "C" LC_CTYPE "C" TEMPLATE template0 OWNER regress_datdba; -ALTER DATABASE regress_database_ddl CONNECTION_LIMIT 123; -ALTER DATABASE regress_database_ddl SET random_page_cost = 2.0; -ALTER ROLE regress_datdba IN DATABASE regress_database_ddl SET random_page_cost = 1.1; +ALTER DATABASE regression_database_ddl CONNECTION_LIMIT 123; +ALTER DATABASE regression_database_ddl SET random_page_cost = 2.0; +ALTER ROLE regress_datdba IN DATABASE regression_database_ddl SET random_page_cost = 1.1; -- Database doesn't exist SELECT * FROM pg_get_database_ddl('regression_database'); @@ -36,31 +36,31 @@ SELECT * FROM pg_get_database_ddl('regression_database'); SELECT * FROM pg_get_database_ddl(NULL); -- Invalid option value (should error) -SELECT * FROM pg_get_database_ddl('regress_database_ddl', 'owner', 'invalid'); +SELECT * FROM pg_get_database_ddl('regression_database_ddl', 'owner', 'invalid'); -- Duplicate option (should error) -SELECT * FROM pg_get_database_ddl('regress_database_ddl', 'owner', 'false', 'owner', 'true'); +SELECT * FROM pg_get_database_ddl('regression_database_ddl', 'owner', 'false', 'owner', 'true'); -- Without options -SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regress_database_ddl'); +SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regression_database_ddl'); -- With owner -SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regress_database_ddl', 'owner', 'true'); +SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regression_database_ddl', 'owner', 'true'); -- Pretty-printed output \pset format unaligned -SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regress_database_ddl', 'pretty', 'true', 'tablespace', 'false'); +SELECT ddl_filter(pg_get_database_ddl) FROM pg_get_database_ddl('regression_database_ddl', 'pretty', 'true', 'tablespace', 'false'); \pset format aligned -- Permission check: revoke CONNECT on database CREATE ROLE regress_db_ddl_noaccess; -REVOKE CONNECT ON DATABASE regress_database_ddl FROM PUBLIC; +REVOKE CONNECT ON DATABASE regression_database_ddl FROM PUBLIC; SET ROLE regress_db_ddl_noaccess; -SELECT * FROM pg_get_database_ddl('regress_database_ddl'); -- should fail +SELECT * FROM pg_get_database_ddl('regression_database_ddl'); -- should fail RESET ROLE; -GRANT CONNECT ON DATABASE regress_database_ddl TO PUBLIC; +GRANT CONNECT ON DATABASE regression_database_ddl TO PUBLIC; DROP ROLE regress_db_ddl_noaccess; -DROP DATABASE regress_database_ddl; +DROP DATABASE regression_database_ddl; DROP FUNCTION ddl_filter(text); DROP ROLE regress_datdba;