On Mon, Jul 18, 2022 at 09:26:53PM -0500, Justin Pryzby wrote:
> Sorry, I meant to send this earlier..

No problem.

> It looks like you named the table "toast_relfilenodes", but then also store
> to it data for non-toast tables.

How about naming that index_relfilenodes?  One difference with what I
posted previously and 5fb5b6 is the addition of an extra regclass that
stores the parent table, for reference in the output.

> It's also a bit weird to call the column "relname" but use it to store the
> ::regclass.  You later need to cast the column to text, so you may as well
> store it as text, either relname or oid::regclass.

I have used "indname" at the end.

> It seems like cluster.sql does this more succinctly.

Except that this does not include the relfilenodes from the toast
indexes, which is something I wanted to add a check for when it comes
to both user tables and catalogs.

> Why {4,5} ?

Looks like a brain fade from here, while looking the relation names
this generated.  This could just match with an integer.
--
Michael
diff --git a/src/bin/scripts/t/090_reindexdb.pl b/src/bin/scripts/t/090_reindexdb.pl
index 864707ff92..b5fff5a9cf 100644
--- a/src/bin/scripts/t/090_reindexdb.pl
+++ b/src/bin/scripts/t/090_reindexdb.pl
@@ -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;/,

Attachment: signature.asc
Description: PGP signature

Reply via email to