bruce wrote:
> Tom Lane wrote:
> > Dave Cramer <pg@fastcrypt.com> writes:
> > > as seen below create tablespace does not throw an error or appear to
> > > do anything other than register the tablespace.
> >
> > I suspect this behavior is partially intentional, because tablespace
> > creation now involves an extra level of subdirectory. However, it's
> > not clear to me why CREATE TABLESPACE is still changing the permissions
> > on the parent directory. Bruce, exactly what is the rationale here?
>
> Well, the symbolic link from data/pg_tblspc points to the top directory,
> not to the catalog-version-named subdirectory. This was done for
> several reasons, particularly so the directory pointed to by the symlink
> would be exactly the same as that specified by CREATE TABLESPACE, for
> code clarity.
Looking at the pg_upgrade code some more, I found that it was not
removing the PG_VERSION file when deleting <= 8.4 tablespace files.
This might confuse administrators so the attached patch adds the removal
of PG_VERSION. I would like to apply this to master and 9.0.X.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c
index 144fcdc..0492657 100644
--- a/contrib/pg_upgrade/check.c
+++ b/contrib/pg_upgrade/check.c
@@ -416,6 +416,11 @@ create_script_for_old_cluster_deletion(migratorContext *ctx,
int dbnum;
fprintf(script, "\n");
+ /* remove PG_VERSION? */
+ if (GET_MAJOR_VERSION(ctx->old.major_version) <= 804)
+ fprintf(script, RM_CMD " %s%s/PG_VERSION\n",
+ ctx->tablespaces[tblnum], ctx->old.tablespace_suffix);
+
for (dbnum = 0; dbnum < ctx->new.dbarr.ndbs; dbnum++)
{
fprintf(script, RMDIR_CMD " %s%s/%d\n",
diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h
index 73070c6..52d4a82 100644
--- a/contrib/pg_upgrade/pg_upgrade.h
+++ b/contrib/pg_upgrade/pg_upgrade.h
@@ -38,6 +38,7 @@
#define pg_copy_file copy_file
#define pg_mv_file rename
#define pg_link_file link
+#define RM_CMD "rm -f"
#define RMDIR_CMD "rm -rf"
#define EXEC_EXT "sh"
#else
@@ -45,6 +46,7 @@
#define pg_mv_file pgrename
#define pg_link_file win32_pghardlink
#define sleep(x) Sleep(x * 1000)
+#define RM_CMD "DEL /q"
#define RMDIR_CMD "RMDIR /s/q"
#define EXEC_EXT "bat"
#define EXE_EXT ".exe"