Re: REINDEX INDEX results in a crash for an index of pg_class since 9.6

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-04-25T15:05:54Z
Lists: pgsql-hackers
On 2019-Apr-25, Michael Paquier wrote:

> 2) Bisecting between the merge base points of REL9_4_STABLE/master and
> REL9_5_STABLE/master, I am being pointed to the introduction of
> replication origins:
> commit: 5aa2350426c4fdb3d04568b65aadac397012bbcb
> author: Andres Freund <andres@anarazel.de>
> date: Wed, 29 Apr 2015 19:30:53 +0200
> Introduce replication progress tracking infrastructure.
> 
> In order to see the problem, also one needs to patch initdb.c so as
> the final VACUUM FULL on pg_database is replaced by VACUUM as on
> 9.6~.  The root of the problem is actually surprising, but manually
> testing on 5aa2350 commit and 5aa2350~1 the difference shows up as the
> issue is easily reproducible here.

Hmm ... I suspect the problem is even older, and that this commit made
it possible to see as a side effect of changing the catalog contents
(since it creates one more view and does a REVOKE, which becomes an
update on pg_class.)

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Commits

  1. Remove reindex_catalog test from test schedules.

  2. Remove RelationSetIndexList().

  3. Fix reindexing of pg_class indexes some more.

  4. Run catalog reindexing test from 3dbb317d32 serially, to avoid deadlocks.

  5. Fix potential assertion failure when reindexing a pg_class index.

  6. Fix several recently introduced issues around handling new relation forks.

  7. Avoid VACUUM FULL altogether in initdb.

  8. Introduce replication progress tracking infrastructure.

  9. initdb: remove unnecessary VACUUM FULL