*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.69 2010/01/07 04:05:39 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.70 2010/01/07 04:10:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* symlink would normally be. This isn't an exact replay of course, but
* it's the best we can do given the available information.
*
- * If tablespaces are not supported, you might think this could be a no-op,
- * but you'd be wrong: we still need it in case we have to re-create a
- * database subdirectory (of $PGDATA/base) during WAL replay.
+ * If tablespaces are not supported, we still need it in case we have to
+ * re-create a database subdirectory (of $PGDATA/base) during WAL replay.
*/
void
TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo)
if (stat(dir, &st) < 0)
{
+ /* Directory does not exist? */
if (errno == ENOENT)
{
/*
*/
if (stat(dir, &st) == 0 && S_ISDIR(st.st_mode))
{
- /* Directory was created. */
+ /* Directory was created */
}
else
{
(errcode_for_file_access(),
errmsg("could not create directory \"%s\": %m",
dir)));
+
/* Parent directory must be missing */
parentdir = pstrdup(dir);
get_parent_directory(parentdir);
errmsg("could not create directory \"%s\": %m",
parentdir)));
pfree(parentdir);
+
/* Create database directory */
if (mkdir(dir, S_IRWXU) < 0)
ereport(ERROR,
* '/<dboid>/<relid>.<nnn>' (XXX but do we ever form the whole path
* explicitly? This may be overly conservative.)
*/
- if (strlen(location) >= (MAXPGPATH - 1 - OIDCHARS - 1 - OIDCHARS - 1 - OIDCHARS))
+ if (strlen(location) >= MAXPGPATH - 1 - OIDCHARS - 1 - OIDCHARS - 1 - OIDCHARS)
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
errmsg("tablespace location \"%s\" is too long",