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

Commit6896597

Browse files
committed
Prevent core dump when ExecMarkPos is called before any tuples have been
retrieved. This cannot happen in ordinary execution, but it can happenunder EvalPlanQual().
1 parent49077e8 commit6896597

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

‎src/backend/executor/nodeIndexscan.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.75 2002/12/15 16:17:46 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.76 2002/12/18 00:14:24 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -470,10 +470,13 @@ ExecIndexMarkPos(IndexScanState *node)
470470
intindexPtr;
471471

472472
indexPtr=node->iss_MarkIndexPtr=node->iss_IndexPtr;
473-
indexScanDescs=node->iss_ScanDescs;
474-
scanDesc=indexScanDescs[indexPtr];
473+
if (indexPtr >=0&&indexPtr<node->iss_NumIndices)
474+
{
475+
indexScanDescs=node->iss_ScanDescs;
476+
scanDesc=indexScanDescs[indexPtr];
475477

476-
index_markpos(scanDesc);
478+
index_markpos(scanDesc);
479+
}
477480
}
478481

479482
/* ----------------------------------------------------------------
@@ -482,8 +485,6 @@ ExecIndexMarkPos(IndexScanState *node)
482485
* old comments
483486
*Restores scan position by restoring the current index.
484487
*Returns nothing.
485-
*
486-
*XXX Assumes previously marked scan position belongs to current index
487488
* ----------------------------------------------------------------
488489
*/
489490
void
@@ -494,10 +495,13 @@ ExecIndexRestrPos(IndexScanState *node)
494495
intindexPtr;
495496

496497
indexPtr=node->iss_IndexPtr=node->iss_MarkIndexPtr;
497-
indexScanDescs=node->iss_ScanDescs;
498-
scanDesc=indexScanDescs[indexPtr];
498+
if (indexPtr >=0&&indexPtr<node->iss_NumIndices)
499+
{
500+
indexScanDescs=node->iss_ScanDescs;
501+
scanDesc=indexScanDescs[indexPtr];
499502

500-
index_restrpos(scanDesc);
503+
index_restrpos(scanDesc);
504+
}
501505
}
502506

503507
/* ----------------------------------------------------------------

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp