Re: create tablespace fails silently, or succeeds improperly

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: create tablespace fails silently, or succeeds improperly
Дата
Msg-id 201010190237.o9J2bId18620@momjian.us
обсуждение исходный текст
Ответы Re: create tablespace fails silently, or succeeds improperly  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
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"

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Itagaki Takahiro
Дата:
Сообщение: Re: PL/JS
Следующее
От: Tom Lane
Дата:
Сообщение: Re: create tablespace fails silently, or succeeds improperly