On Mon, Nov 18, 2013 at 10:13:19PM -0500, Bruce Momjian wrote: > On Tue, Nov 12, 2013 at 10:35:58AM +0000, Marc Mamin wrote: > > Hello, > > > > IMHO, there is a serious issue in the script to clean the old data directory > > when running pg_upgrade in link mode. > > > > in short: When working with symbolic links, the first step in > > delete_old_cluster.sh > > is to delete the old $PGDATA folder that may contain tablespaces used by the > > new instance. > > > > in long, our use case: > > Rather than removing files/directories individually, which would be > difficult to maintain, we decided in pg_upgrade 9.3 to detect > tablespaces in the old data directory and report that and not create a > delete script. Here is the commit: > > > http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=4765dd79219b9697d84f5c2c70f3fe00455609a1 > > The problem with your setup is that while you didn't pass symbolic links > to pg_upgrade, you did use symbolic links when defining the tablespaces, > so pg_upgrade couldn't recognize that the symbolic links were inside the > old data directory. > > We could use readlink() to go walk over all symbolic links, but that > seems quite complex. We could use stat() and make sure there are no > matching inodes in the old data directory, or that they are in a > different file system. We could look for a directory named after the PG > catversion in the old data directory. We could update the docs. > > I am not sure what to do. We never expected people would put > tablespaces in the data directory.
I went with a doc patch, attached. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
diff --git a/doc/src/sgml/pgupgrade.sgml b/doc/src/sgml/pgupgrade.sgml new file mode 100644 index 4d03b12..72e3cb6 *** a/doc/src/sgml/pgupgrade.sgml --- b/doc/src/sgml/pgupgrade.sgml *************** psql --username postgres --file script.s *** 460,466 **** cluster's data directories by running the script mentioned when <command>pg_upgrade</command> completes. You can also delete the old installation directories ! (e.g. <filename>bin</>, <filename>share</>). </para> </step> --- 460,467 ---- cluster's data directories by running the script mentioned when <command>pg_upgrade</command> completes. You can also delete the old installation directories ! (e.g. <filename>bin</>, <filename>share</>). This will not work ! if you have tablespaces inside the old data directory. </para> </step>
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers