Hello, I noticed by the following report, PostgreSQL can share the same directory as tablespaces of two servers with different pg-versions.
https://www.postgresql.org/message-id/2008148.rxBNyNRHPZ@peanuts2 8.4 checked that the tablespace location is empty, but from 9.0, the check is replaced with creating a PG_PGVER_CATVER subdirectory. This works for multiple servers with the same version, but don't for servers with different versions. This is apparently a bug but doesn't cause any other problem immediately. If we choose not to do this, the documentaion needs to be edited instead. https://www.postgresql.org/docs/9.6/static/manage-ag-tablespaces.html | The location must be an existing, empty directory that is owned | by the PostgreSQL operating system user. regards, - Kyotaro Horiguchi NTT Open Source Software Center
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index f9c2620..6a89be1 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -606,23 +606,21 @@ create_tablespace_directories(const char *location, const Oid tablespaceoid) } } + /* - * The creation of the version directory prevents more than one tablespace - * in a single location. + * Check the target directory is empty. */ + if (!directory_is_empty(location)) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_IN_USE), + errmsg("directory \"%s\" is not empty", + location))); + if (mkdir(location_with_version_dir, S_IRWXU) < 0) - { - if (errno == EEXIST) - ereport(ERROR, - (errcode(ERRCODE_OBJECT_IN_USE), - errmsg("directory \"%s\" already in use as a tablespace", - location_with_version_dir))); - else - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not create directory \"%s\": %m", - location_with_version_dir))); - } + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not create directory \"%s\": %m", + location_with_version_dir))); /* * In recovery, remove old symlink, in case it points to the wrong place.
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers