On Tue, Sep 03, 2024 at 12:35:42PM -0400, Jonathan S. Katz wrote: > However, I ran into the issue in[1], where pg_index was identified as > catalog that is missing a toast table, even though `indexprs` is marked for > extended storage. Providing a very simple reproducer in psql below:
Thanks to commit 96cdeae, only a few catalogs remain that are missing TOAST tables: pg_attribute, pg_class, pg_index, pg_largeobject, and pg_largeobject_metadata. I've attached a short patch to add one for pg_index, which resolves the issue cited here. This passes "check-world" and didn't fail for a few ad hoc tests (e.g., VACUUM FULL on pg_index). I haven't spent too much time investigating possible circularity issues, but I'll note that none of the system indexes presently use the indexprs and indpred columns. If we do want to proceed with adding a TOAST table to pg_index, IMHO it would be better to do it sooner than later so that it has plenty of time to bake. -- nathan
>From 301aeeb346c3499e4555e4db1f4fc124f9cbab62 Mon Sep 17 00:00:00 2001 From: Nathan Bossart <nat...@postgresql.org> Date: Wed, 4 Sep 2024 13:28:27 -0500 Subject: [PATCH v1 1/1] add toast table to pg_index --- src/include/catalog/pg_index.h | 2 ++ src/test/regress/expected/misc_sanity.out | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h index 3462572eb5..6c89639a9e 100644 --- a/src/include/catalog/pg_index.h +++ b/src/include/catalog/pg_index.h @@ -69,6 +69,8 @@ CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO */ typedef FormData_pg_index *Form_pg_index; +DECLARE_TOAST_WITH_MACRO(pg_index, 8149, 8150, PgIndexToastTable, PgIndexToastIndex); + DECLARE_INDEX(pg_index_indrelid_index, 2678, IndexIndrelidIndexId, pg_index, btree(indrelid oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_index_indexrelid_index, 2679, IndexRelidIndexId, pg_index, btree(indexrelid oid_ops)); diff --git a/src/test/regress/expected/misc_sanity.out b/src/test/regress/expected/misc_sanity.out index ad88cbd5c4..2152c65810 100644 --- a/src/test/regress/expected/misc_sanity.out +++ b/src/test/regress/expected/misc_sanity.out @@ -56,11 +56,9 @@ ORDER BY 1, 2; pg_class | relacl | aclitem[] pg_class | reloptions | text[] pg_class | relpartbound | pg_node_tree - pg_index | indexprs | pg_node_tree - pg_index | indpred | pg_node_tree pg_largeobject | data | bytea pg_largeobject_metadata | lomacl | aclitem[] -(11 rows) +(9 rows) -- system catalogs without primary keys -- -- 2.39.3 (Apple Git-146)