postgres.git / summary / log / commit / refs

commit    fac31b2cd4470124d7d68a7eebdb13cfff8b3d3d
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Nov 30 19:38:00 2020 +0000
First released in: 14.0, 11.11, 12.6, 13.2

    Prevent parallel index build in a standalone backend.
    
    This can't work if there's no postmaster, and indeed the code got an
    assertion failure trying.  There should be a check on IsUnderPostmaster
    gating the use of parallelism, as the planner has for ordinary
    parallel queries.
    
    Commit 40d964ec9 got this right, so follow its model of checking
    IsUnderPostmaster at the same place where we check for
    max_parallel_maintenance_workers == 0.  In general, new code
    implementing parallel utility operations should do the same.
    
    Report and patch by Yulin Pei, cosmetically adjusted by me.
    Back-patch to v11 where this code came in.
    
    Discussion: https://postgr.es/m/HK0PR01MB22747D839F77142D7E76A45DF4F50@HK0PR01MB2274.apcprd01.prod.exchangelabs.com


src/backend/optimizer/plan/planner.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 767d0ed7e43..5d515842dcf 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -6360,8 +6360,11 @@ plan_create_index_workers(Oid tableOid, Oid indexOid) double reltuples; double allvisfrac; - /* Return immediately when parallelism disabled */ - if (max_parallel_maintenance_workers == 0) + /* + * We don't allow performing parallel operation in standalone backend or + * when parallelism is disabled. + */ + if (!IsUnderPostmaster || max_parallel_maintenance_workers == 0) return 0; /* Set up largely-dummy planner state */ [parent: 666a4de939bf]