Fix parallel index builds for dynamic_shared_memory_type=none.
authorRobert Haas <rhaas@postgresql.org>
Mon, 12 Feb 2018 17:55:12 +0000 (12:55 -0500)
committerRobert Haas <rhaas@postgresql.org>
Mon, 12 Feb 2018 17:55:12 +0000 (12:55 -0500)
The previous code failed to realize that this setting effectively
disables parallelism, and would crash if it decided to attempt
parallelism anyway.  Instead, treat it as a disabling condition.

Kyotaro Horiguchi, who also reported the issue. Reviewed by Michael
Paquier and Peter Geoghegan.

Discussion: http://postgr.es/m/20180209.170635.256350357.horiguchi.kyotaro@lab.ntt.co.jp

src/backend/optimizer/plan/planner.c

index 740de4957dd54334e1d00e04763e7080c1653da7..3e8cd1447cc18203f9385327d2d9e1b3d10e8296 100644 (file)
@@ -5825,7 +5825,8 @@ plan_create_index_workers(Oid tableOid, Oid indexOid)
    double      allvisfrac;
 
    /* Return immediately when parallelism disabled */
-   if (max_parallel_maintenance_workers == 0)
+   if (dynamic_shared_memory_type == DSM_IMPL_NONE ||
+       max_parallel_maintenance_workers == 0)
        return 0;
 
    /* Set up largely-dummy planner state */