diff options
-rw-r--r-- | src/backend/commands/tablespace.c | 6 | ||||
-rw-r--r-- | src/bin/pg_upgrade/check.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index fd226125a93..4ec1affbfb1 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -288,6 +288,12 @@ CreateTableSpace(CreateTableSpaceStmt *stmt) errmsg("tablespace location \"%s\" is too long", location))); + /* Warn if the tablespace is in the data directory. */ + if (path_is_prefix_of_path(DataDir, location)) + ereport(WARNING, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("tablespace location should not be inside the data directory"))); + /* * Disallow creation of tablespaces named "pg_xxx"; we reserve this * namespace for system purposes. diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c index 647bf349f4d..6db223ab070 100644 --- a/src/bin/pg_upgrade/check.c +++ b/src/bin/pg_upgrade/check.c @@ -508,6 +508,10 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name) canonicalize_path(old_tablespace_dir); if (path_is_prefix_of_path(old_cluster_pgdata, old_tablespace_dir)) { + /* reproduce warning from CREATE TABLESPACE that is in the log */ + pg_log(PG_WARNING, + "\nWARNING: user-defined tablespace locations should not be inside the data directory, e.g. %s\n", old_tablespace_dir); + /* Unlink file in case it is left over from a previous run. */ unlink(*deletion_script_file_name); pg_free(*deletion_script_file_name); |