MCPcopy Create free account
hub / github.com/apache/cloudberry / ExecParallelReinitialize

Function ExecParallelReinitialize

src/backend/executor/execParallel.c:900–944  ·  view source on GitHub ↗

* Re-initialize the parallel executor shared memory state before launching * a fresh batch of workers. */

Source from the content-addressed store, hash-verified

898 * a fresh batch of workers.
899 */
900void
901ExecParallelReinitialize(PlanState *planstate,
902 ParallelExecutorInfo *pei,
903 Bitmapset *sendParams)
904{
905 EState *estate = planstate->state;
906 FixedParallelExecutorState *fpes;
907
908 /* Old workers must already be shut down */
909 Assert(pei->finished);
910
911 /*
912 * Force any initplan outputs that we're going to pass to workers to be
913 * evaluated, if they weren't already (see comments in
914 * ExecInitParallelPlan).
915 */
916 ExecSetParamPlanMulti(sendParams, GetPerTupleExprContext(estate), NULL);
917
918 ReinitializeParallelDSM(pei->pcxt);
919 pei->tqueue = ExecParallelSetupTupleQueues(pei->pcxt, true);
920 pei->reader = NULL;
921 pei->finished = false;
922
923 fpes = shm_toc_lookup(pei->pcxt->toc, PARALLEL_KEY_EXECUTOR_FIXED, false);
924
925 /* Free any serialized parameters from the last round. */
926 if (DsaPointerIsValid(fpes->param_exec))
927 {
928 dsa_free(pei->area, fpes->param_exec);
929 fpes->param_exec = InvalidDsaPointer;
930 }
931
932 /* Serialize current parameter values if required. */
933 if (!bms_is_empty(sendParams))
934 {
935 pei->param_exec = SerializeParamExecParams(estate, sendParams,
936 pei->area);
937 fpes->param_exec = pei->param_exec;
938 }
939
940 /* Traverse plan tree and let each child node reset associated state. */
941 estate->es_query_dsa = pei->area;
942 ExecParallelReInitializeDSM(planstate, pei->pcxt);
943 estate->es_query_dsa = NULL;
944}
945
946/*
947 * Traverse plan tree to reinitialize per-node dynamic shared memory state

Callers 2

ExecGatherMergeFunction · 0.85
ExecGatherFunction · 0.85

Calls 8

ExecSetParamPlanMultiFunction · 0.85
ReinitializeParallelDSMFunction · 0.85
shm_toc_lookupFunction · 0.85
dsa_freeFunction · 0.85
bms_is_emptyFunction · 0.85
SerializeParamExecParamsFunction · 0.85

Tested by

no test coverage detected