The shortcut exit that I recently added to ExecInitIndexScan() for
EXPLAIN-only operation was a little too short; it skipped initializing the node's result tuple type, which may be needed depending on what's above the indexscan node. Call ExecAssignResultTypeFromTL before exiting. (For good luck I moved up the ExecAssignScanProjectionInfo call as well, so that everything except indexscan-specific initialization will still be done.) Per example from Grant Finnemore.
This commit is contained in:
parent
10f719af33
commit
cc3e9deee6
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.122 2007/05/25 17:54:25 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.123 2007/05/31 20:45:26 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -522,6 +522,12 @@ ExecInitIndexScan(IndexScan *node, EState *estate, int eflags)
|
|||||||
*/
|
*/
|
||||||
ExecAssignScanType(&indexstate->ss, RelationGetDescr(currentRelation));
|
ExecAssignScanType(&indexstate->ss, RelationGetDescr(currentRelation));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize result tuple type and projection info.
|
||||||
|
*/
|
||||||
|
ExecAssignResultTypeFromTL(&indexstate->ss.ps);
|
||||||
|
ExecAssignScanProjectionInfo(&indexstate->ss);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are just doing EXPLAIN (ie, aren't going to run the plan),
|
* If we are just doing EXPLAIN (ie, aren't going to run the plan),
|
||||||
* stop here. This allows an index-advisor plugin to EXPLAIN a plan
|
* stop here. This allows an index-advisor plugin to EXPLAIN a plan
|
||||||
@ -589,12 +595,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, int eflags)
|
|||||||
indexstate->iss_NumScanKeys,
|
indexstate->iss_NumScanKeys,
|
||||||
indexstate->iss_ScanKeys);
|
indexstate->iss_ScanKeys);
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize result tuple type and projection info.
|
|
||||||
*/
|
|
||||||
ExecAssignResultTypeFromTL(&indexstate->ss.ps);
|
|
||||||
ExecAssignScanProjectionInfo(&indexstate->ss);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* all done.
|
* all done.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user