postgres.git / summary / log / commit / refs

commit    9410f7cbf4ff7bb0b94238b8d5fee4aecf157374
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Mon Sep 30 02:17:23 2024 +0000
First released in: 18.0, 13.17, 14.14, 15.9, 16.5, 17.1

    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


src/bin/scripts/reindexdb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c index b2e1b9cd1ba..8e7fa276549 100644 --- a/src/bin/scripts/reindexdb.c +++ b/src/bin/scripts/reindexdb.c @@ -629,6 +629,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; @@ -651,6 +653,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) [parent: db1992455569]