summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2024-09-30 11:13:55 +0900
committerFujii Masao <fujii@postgresql.org>2024-09-30 11:16:21 +0900
commit92cc21d158f30d46642b5123697f71b7a740fbd7 (patch)
treecbd78ba0021f9ecb777f7b0b4cde8869467b6f1c
parent159bf0f31b59f7ef7f4bc6c3f57a5187f6a96947 (diff)
reindexdb: Skip reindexing temporary tables and indexes.
Reindexing temp tables or indexes of other sessions is not allowed. However, reindexdb in parallel mode previously listed them as the objects to process, leading to failures. This commit ensures reindexdb in parallel mode skips temporary tables and indexes by adding a condition based on the relpersistence column in pg_class to the object listing queries, preventing these issues. Note that this commit does not affect reindexdb when temporary tables or indexes are explicitly specified using the -t or -j options; reindexdb in that case still does not skip them and can cause an error. Back-patch to v13 where parallel mode was introduced in reindexdb. Author: Fujii Masao Reviewed-by: Michael Paquier Discussion: https://postgr.es/m/5f37ee56-14fb-44fe-9150-9eb97e10538b@oss.nttdata.com
-rw-r--r--src/bin/scripts/reindexdb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c
index fc2ad9d508a..eb1e6fe825a 100644
--- a/src/bin/scripts/reindexdb.c
+++ b/src/bin/scripts/reindexdb.c
@@ -638,6 +638,8 @@ get_parallel_object_list(PGconn *conn, ReindexType type,
" AND c.relkind IN ("
CppAsString2(RELKIND_RELATION) ", "
CppAsString2(RELKIND_MATVIEW) ")\n"
+ " AND c.relpersistence != "
+ CppAsString2(RELPERSISTENCE_TEMP) "\n"
" ORDER BY c.relpages DESC;");
break;
@@ -660,6 +662,8 @@ get_parallel_object_list(PGconn *conn, ReindexType type,
" WHERE c.relkind IN ("
CppAsString2(RELKIND_RELATION) ", "
CppAsString2(RELKIND_MATVIEW) ")\n"
+ " AND c.relpersistence != "
+ CppAsString2(RELPERSISTENCE_TEMP) "\n"
" AND ns.nspname IN (");
for (cell = user_list->head; cell; cell = cell->next)