On Sat, Jun 24, 2017 at 09:19:10AM +0530, Amit Kapila wrote: > > I successfully upgraded last night from 9.2 to 9.4 and find other issue :-) > > > > It is about hash index and promote: > > 1. create master > > 2. create standby from it > > 3. create unlogged table and hash index like: > > create unlogged table test (id int primary key, v text); > > create index on test using hash (id); > > 3. stop master > > 4. promote standby > > > > now, if you try to upgrade this new promoted master pg_upgrade will stop > > on this hash index: > > error while creating link for relation "public.test_id_idx" > > ("s/9.2/base/16384/16393" to "m/9.4/base/16422/16393"): No such file or > > directory > > Failure, exiting > > > > I am not sure if this is a problem because in the version you are > trying hash indexes are not WAL-logged and the creation of same will > not be replicated on standby, so the error seems to be expected.
Well, it certainly should not error out like this. I have not seen such a failure report before. I think the fundamental problem is that unlogged objects (pg_class.relpersistence='u') creates a file on the master, but doesn't create anything on the standby since it is never transmitted over the WAL (assuming the object is created after the base backup). I assume the standby creates them as empty when it is promoted to primary and someone tries to access the object. I wonder if I need to add a boolean to each object to record if it is unlogged, and allow copy/link to silently fail in such cases. Does that make sense? -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + As you are, so once was I. As I am, so you will be. + + Ancient Roman grave inscription + -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers