@ -40,7 +40,7 @@ my $toast_index = $node->safe_psql('postgres',
# REINDEX operations. A set of relfilenodes is saved from the catalogs
# and then compared with pg_class.
$ node - > safe_psql ( 'postgres' ,
'CREATE TABLE toast _relfilenodes (parent regclass, indname regclass, relfilenode oid);'
'CREATE TABLE index _relfilenodes (parent regclass, indname regclass, relfilenode oid);'
) ;
# Save the relfilenode of a set of toast indexes, one from the catalog
# pg_constraint and one from the test table.
@ -58,8 +58,8 @@ my $fetch_index_relfilenodes = qq{SELECT i.indrelid, a.oid, a.relfilenode
JOIN pg_index i ON ( i . indexrelid = a . oid )
WHERE a . relname IN ( 'pg_constraint_oid_index' , 'test1x' ) } ;
my $ save_relfilenodes =
"INSERT INTO toast _relfilenodes $fetch_toast_relfilenodes;"
. "INSERT INTO toast _relfilenodes $fetch_index_relfilenodes;" ;
"INSERT INTO index _relfilenodes $fetch_toast_relfilenodes;"
. "INSERT INTO index _relfilenodes $fetch_index_relfilenodes;" ;
# Query to compare a set of relfilenodes saved with the contents of pg_class.
# Note that this does not join using OIDs, as CONCURRENTLY would change them
@ -68,10 +68,10 @@ my $save_relfilenodes =
# based on the name is enough to ensure a fixed output, where the name of the
# parent table is included to provide more context.
my $ compare_relfilenodes = qq( SELECT b.parent::regclass,
regexp_replace ( b . indname:: text , '(pg_toast.pg_toast_)\\d{4,5} (_index)' , '\\1<oid>\\2' ) ,
regexp_replace ( b . indname:: text , '(pg_toast.pg_toast_)\\d+ (_index)' , '\\1<oid>\\2' ) ,
CASE WHEN a . relfilenode = b . relfilenode THEN 'relfilenode is unchanged'
ELSE 'relfilenode has changed' END
FROM toast _relfilenodes b
FROM index _relfilenodes b
JOIN pg_class a ON b . indname:: text = a . oid::regclass:: text
ORDER BY b . parent:: text , b . indname:: text ) ;
@ -91,7 +91,7 @@ test1|test1x|relfilenode has changed),
# Re-save and run the second one.
$ node - > safe_psql ( 'postgres' ,
"TRUNCATE toast _relfilenodes; $save_relfilenodes" ) ;
"TRUNCATE index _relfilenodes; $save_relfilenodes" ) ;
$ node - > issues_sql_like (
[ 'reindexdb' , '-s' , 'postgres' ] ,
qr/statement: REINDEX SYSTEM postgres;/ ,