Hi!
I have noticed the novice users are stuck trying to create tablespace
over a directory whose owner is not the system postgres user. They
observed the message "could not set permissions on directory ...:
permission denied".
I want to add patch that prints hint to set required owner for the
tablespace directory if this is the cause of the problem (*errno ==
EPERM* after calling *chmod*).
--
Regards,
Maksim Milyutin
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index f7e9160..a8733d4 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -585,10 +585,16 @@ create_tablespace_directories(const char *location, const Oid tablespaceoid)
InRecovery ? errhint("Create this directory for the tablespace before "
"restarting the server.") : 0));
else
+ {
+ bool wrong_owner = (errno == EPERM);
+
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not set permissions on directory \"%s\": %m",
- location)));
+ location),
+ wrong_owner ? errhint("Install the PostgreSQL system user as "
+ "the owner of this directory.") : 0));
+ }
}
if (InRecovery)