Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit53c7cff

Browse files
committed
Ensure gatherstate->nextreader is properly initialized.
The previously code worked OK as long as a Gather node was neverrescanned, or if it was rescanned, as long as it got at least asmany workers on rescan as it had originally. But if the numberof workers ever decreased on a rescan, then it could crash.Andreas Seltenreich
1 parent093129c commit53c7cff

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

‎src/backend/executor/nodeGather.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ ExecGather(GatherState *node)
173173
if (pcxt->nworkers_launched>0)
174174
{
175175
node->nreaders=0;
176+
node->nextreader=0;
176177
node->reader=
177178
palloc(pcxt->nworkers_launched*sizeof(TupleQueueReader*));
178179

@@ -335,6 +336,7 @@ gather_readnext(GatherState *gatherstate)
335336
CHECK_FOR_INTERRUPTS();
336337

337338
/* Attempt to read a tuple, but don't block if none is available. */
339+
Assert(gatherstate->nextreader<gatherstate->nreaders);
338340
reader=gatherstate->reader[gatherstate->nextreader];
339341
tup=TupleQueueReaderNext(reader, true,&readerdone);
340342

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp