diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/alter.c | 6 | ||||
-rw-r--r-- | src/backend/commands/dbcommands.c | 19 | ||||
-rw-r--r-- | src/backend/commands/subscriptioncmds.c | 9 | ||||
-rw-r--r-- | src/backend/commands/tablespace.c | 18 | ||||
-rw-r--r-- | src/backend/commands/user.c | 18 | ||||
-rw-r--r-- | src/backend/replication/logical/origin.c | 9 | ||||
-rw-r--r-- | src/test/modules/README | 7 |
7 files changed, 86 insertions, 0 deletions
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c index 9229fe1a456..70dbcb0756c 100644 --- a/src/backend/commands/alter.c +++ b/src/backend/commands/alter.c @@ -274,6 +274,12 @@ AlterObjectRename_internal(Relation rel, Oid objectId, const char *new_name) if (SearchSysCacheExists2(SUBSCRIPTIONNAME, MyDatabaseId, CStringGetDatum(new_name))) report_name_conflict(classId, new_name); + + /* Also enforce regression testing naming rules, if enabled */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(new_name, "regress_", 8) != 0) + elog(WARNING, "subscriptions created by regression test cases should have names starting with \"regress_\""); +#endif } else if (nameCacheId >= 0) { diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 15207bf75a1..863f89f19d2 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -471,6 +471,16 @@ createdb(ParseState *pstate, const CreatedbStmt *stmt) } /* + * If built with appropriate switch, whine when regression-testing + * conventions for database names are violated. But don't complain during + * initdb. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (IsUnderPostmaster && strstr(dbname, "regression") == NULL) + elog(WARNING, "databases created by regression test cases should have names including \"regression\""); +#endif + + /* * Check for db name conflict. This is just to give a more friendly error * message than "unique index violation". There's a race condition but * we're willing to accept the less friendly message in that case. @@ -1009,6 +1019,15 @@ RenameDatabase(const char *oldname, const char *newname) errmsg("permission denied to rename database"))); /* + * If built with appropriate switch, whine when regression-testing + * conventions for database names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strstr(newname, "regression") == NULL) + elog(WARNING, "databases created by regression test cases should have names including \"regression\""); +#endif + + /* * Make sure the new name doesn't exist. See notes for same error in * CREATE DATABASE. */ diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index f13dce90a11..2e67a5889e5 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -357,6 +357,15 @@ CreateSubscription(CreateSubscriptionStmt *stmt, bool isTopLevel) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to create subscriptions")))); + /* + * If built with appropriate switch, whine when regression-testing + * conventions for subscription names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(stmt->subname, "regress_", 8) != 0) + elog(WARNING, "subscriptions created by regression test cases should have names starting with \"regress_\""); +#endif + rel = table_open(SubscriptionRelationId, RowExclusiveLock); /* Check if name is used */ diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index 5e43867e6f9..502736be1aa 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -308,6 +308,15 @@ CreateTableSpace(CreateTableSpaceStmt *stmt) errdetail("The prefix \"pg_\" is reserved for system tablespaces."))); /* + * If built with appropriate switch, whine when regression-testing + * conventions for tablespace names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(stmt->tablespacename, "regress_", 8) != 0) + elog(WARNING, "tablespaces created by regression test cases should have names starting with \"regress_\""); +#endif + + /* * Check that there is no other tablespace by this name. (The unique * index would catch this anyway, but might as well give a friendlier * message.) @@ -957,6 +966,15 @@ RenameTableSpace(const char *oldname, const char *newname) errmsg("unacceptable tablespace name \"%s\"", newname), errdetail("The prefix \"pg_\" is reserved for system tablespaces."))); + /* + * If built with appropriate switch, whine when regression-testing + * conventions for tablespace names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(newname, "regress_", 8) != 0) + elog(WARNING, "tablespaces created by regression test cases should have names starting with \"regress_\""); +#endif + /* Make sure the new name doesn't exist */ ScanKeyInit(&entry[0], Anum_pg_tablespace_spcname, diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index ccc586d8e85..aab5aa855d2 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -327,6 +327,15 @@ CreateRole(ParseState *pstate, CreateRoleStmt *stmt) errdetail("Role names starting with \"pg_\" are reserved."))); /* + * If built with appropriate switch, whine when regression-testing + * conventions for role names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(stmt->role, "regress_", 8) != 0) + elog(WARNING, "roles created by regression test cases should have names starting with \"regress_\""); +#endif + + /* * Check the pg_authid relation to be certain the role doesn't already * exist. */ @@ -1212,6 +1221,15 @@ RenameRole(const char *oldname, const char *newname) newname), errdetail("Role names starting with \"pg_\" are reserved."))); + /* + * If built with appropriate switch, whine when regression-testing + * conventions for role names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(newname, "regress_", 8) != 0) + elog(WARNING, "roles created by regression test cases should have names starting with \"regress_\""); +#endif + /* make sure the new name doesn't exist */ if (SearchSysCacheExists1(AUTHNAME, CStringGetDatum(newname))) ereport(ERROR, diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index 5bb804cece1..681132c922b 100644 --- a/src/backend/replication/logical/origin.c +++ b/src/backend/replication/logical/origin.c @@ -1238,6 +1238,15 @@ pg_replication_origin_create(PG_FUNCTION_ARGS) name), errdetail("Origin names starting with \"pg_\" are reserved."))); + /* + * If built with appropriate switch, whine when regression-testing + * conventions for replication origin names are violated. + */ +#ifdef ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS + if (strncmp(name, "regress_", 8) != 0) + elog(WARNING, "replication origins created by regression test cases should have names starting with \"regress_\""); +#endif + roident = replorigin_create(name); pfree(name); diff --git a/src/test/modules/README b/src/test/modules/README index 99f921d582a..025ecac7243 100644 --- a/src/test/modules/README +++ b/src/test/modules/README @@ -6,6 +6,13 @@ intended for testing PostgreSQL and/or to serve as example code. The extensions here aren't intended to be installed in a production server and aren't suitable for "real work". +Furthermore, while you can do "make install" and "make installcheck" in +this directory or its children, it is NOT ADVISABLE to do so with a server +containing valuable data. Some of these tests may have undesirable +side-effects on roles or other global objects within the tested server. +"make installcheck-world" at the top level does not recurse into this +directory. + Most extensions have their own pg_regress tests or isolationtester specs. Some are also used by tests elsewhere in the tree. |