bruce wrote:
> Tom Lane wrote:
> > Dave Cramer <p...@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  <br...@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"
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to