Cope with NULL query string in ExecInitParallelPlan().
authorAndres Freund <andres@anarazel.de>
Thu, 8 Apr 2021 05:00:01 +0000 (22:00 -0700)
committerAndres Freund <andres@anarazel.de>
Thu, 8 Apr 2021 05:08:24 +0000 (22:08 -0700)
It's far from clear that this is the right approach - but a good
portion of the buildfarm has been red for a few hours, on the last day
of the CF. And this fixes at least the obvious crash. So let's go with
that for now.

Discussion: https://postgr.es/m/20210407225806.majgznh4lk34hjvu%40alap3.anarazel.de

src/backend/executor/execParallel.c

index c7a2f3147353e79eab5fbad15a153d3e1f3c69d6..d104a19767cfeb18284b71a8f262ef4f46102894 100644 (file)
@@ -647,7 +647,7 @@ ExecInitParallelPlan(PlanState *planstate, EState *estate,
    shm_toc_estimate_keys(&pcxt->estimator, 1);
 
    /* Estimate space for query text. */
-   query_len = strlen(estate->es_sourceText);
+   query_len = estate->es_sourceText ? strlen(estate->es_sourceText) : 0;
    shm_toc_estimate_chunk(&pcxt->estimator, query_len + 1);
    shm_toc_estimate_keys(&pcxt->estimator, 1);
 
@@ -742,7 +742,10 @@ ExecInitParallelPlan(PlanState *planstate, EState *estate,
 
    /* Store query string */
    query_string = shm_toc_allocate(pcxt->toc, query_len + 1);
-   memcpy(query_string, estate->es_sourceText, query_len + 1);
+   if (query_len == 0)
+       query_string[0] = 0;
+   else
+       memcpy(query_string, estate->es_sourceText, query_len + 1);
    shm_toc_insert(pcxt->toc, PARALLEL_KEY_QUERY_TEXT, query_string);
 
    /* Store serialized PlannedStmt. */