TablespaceCreateDbspace should function normally even on platforms that do not
authorTom Lane <[email protected]>
Wed, 29 Mar 2006 15:16:00 +0000 (15:16 +0000)
committerTom Lane <[email protected]>
Wed, 29 Mar 2006 15:16:00 +0000 (15:16 +0000)
have symlinks (ie, Windows).  Although it'll never be called on to do anything
useful during normal operation on such a platform, it's still needed to
re-create dropped directories during WAL replay.

src/backend/commands/tablespace.c

index 9ae2f08815481681d76424081158a4479b8e8231..da462b2e1617870a661de8212c9006a61848bcf6 100644 (file)
@@ -80,9 +80,6 @@ static void set_short_version(const char *path);
  * object in the tablespace, create the subdirectory.  If the subdirectory
  * already exists, just fall through quietly.
  *
- * If tablespaces are not supported, this is just a no-op; CREATE DATABASE
- * is expected to create the default subdirectory for the database.
- *
  * isRedo indicates that we are creating an object during WAL replay.
  * In this case we will cope with the possibility of the tablespace
  * directory not being there either --- this could happen if we are
@@ -90,11 +87,14 @@ static void set_short_version(const char *path);
  * We handle this by making a directory in the place where the tablespace
  * 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.
  */
 void
 TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo)
 {
-#ifdef HAVE_SYMLINK
        struct stat st;
        char       *dir;
 
@@ -177,7 +177,6 @@ TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo)
        }
 
        pfree(dir);
-#endif   /* HAVE_SYMLINK */
 }
 
 /*