Warn about tablespace creation in PGDATA

Also add warning to pg_upgrade

Report by Josh Berkus
pull/14/head
Bruce Momjian 11 years ago
parent 290713e31a
commit 33cb8ff6aa
  1. 6
      src/backend/commands/tablespace.c
  2. 4
      src/bin/pg_upgrade/check.c

@ -288,6 +288,12 @@ CreateTableSpace(CreateTableSpaceStmt *stmt)
errmsg("tablespace location \"%s\" is too long", errmsg("tablespace location \"%s\" is too long",
location))); 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 * Disallow creation of tablespaces named "pg_xxx"; we reserve this
* namespace for system purposes. * namespace for system purposes.

@ -508,6 +508,10 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
canonicalize_path(old_tablespace_dir); canonicalize_path(old_tablespace_dir);
if (path_is_prefix_of_path(old_cluster_pgdata, 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 file in case it is left over from a previous run. */
unlink(*deletion_script_file_name); unlink(*deletion_script_file_name);
pg_free(*deletion_script_file_name); pg_free(*deletion_script_file_name);

Loading…
Cancel
Save