Robert Haas <rhaas@postgresql.org> writes:
> Support Parallel Append plan nodes.
Buildfarm member sidewinder doesn't like this:
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f7ff5b0e01a in _lwp_kill () from /usr/lib/libc.so.12
#0 0x00007f7ff5b0e01a in _lwp_kill () from /usr/lib/libc.so.12
#1 0x00007f7ff5b0dca5 in abort () from /usr/lib/libc.so.12
#2 0x000000000082b5e3 in ExceptionalCondition (conditionName=conditionName@entry=0x9ad548
"!(append->first_partial_plan< node->as_nplans)", errorType=errorType@entry=0x87489a "FailedAssertion",
fileName=fileName@entry=0x9ad4d6"nodeAppend.c", lineNumber=lineNumber@entry=509) at assert.c:54
#3 0x000000000060feb6 in choose_next_subplan_for_worker (node=0x7f7ff7357980) at nodeAppend.c:509
#4 0x000000000061007d in ExecAppend (pstate=0x7f7ff7357980) at nodeAppend.c:222
#5 0x0000000000610464 in ExecProcNode (node=0x7f7ff7357980) at ../../../src/include/executor/executor.h:241
#6 fetch_input_tuple (aggstate=aggstate@entry=0x7f7ff7357a98) at nodeAgg.c:699
#7 0x0000000000612531 in agg_retrieve_direct (aggstate=0x7f7ff7357a98) at nodeAgg.c:2456
#8 ExecAgg (pstate=0x7f7ff7357a98) at nodeAgg.c:2166
#9 0x0000000000603cbd in ExecProcNode (node=0x7f7ff7357a98) at ../../../src/include/executor/executor.h:241
#10 ExecutePlan (execute_once=<optimized out>, dest=0x7f7ff73556b8, direction=<optimized out>, numberTuples=0,
sendTuples=1'\001', operation=CMD_SELECT, use_parallel_mode=<optimized out>, planstate=0x7f7ff7357a98,
estate=0x7f7ff7357040)at execMain.c:1718
#11 standard_ExecutorRun (queryDesc=0x7f7ff7369f58, direction=<optimized out>, count=0, execute_once=<optimized out>)
atexecMain.c:361
#12 0x000000000060833b in ParallelQueryMain (seg=0x7f7ff7b65908, toc=0x7f7ff7fab000) at execParallel.c:1319
#13 0x00000000004f6e54 in ParallelWorkerMain (main_arg=<optimized out>) at parallel.c:1150
#14 0x00000000006ba07f in StartBackgroundWorker () at bgworker.c:841
#15 0x00000000006c51f9 in do_start_bgworker (rw=<optimized out>) at postmaster.c:5741
Append.first_partial_plan is sadly underdocumented, but considering that
the loop above this Assert is prepared for the possibility that
first_partial_plan >= node->as_nplans, I'm not sure why this code supposes
that that can't happen.
BTW, I find it confusing and bad style that some of the references
in this function to node->as_pstate go through the local variable
pstate but others do not.
regards, tom lane