From cc3e9deee615c57673896cd486bd74773d841b55 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 31 May 2007 20:45:26 +0000 Subject: [PATCH] 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. --- src/backend/executor/nodeIndexscan.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index 8c22e3ade0..a1fb29ad2c 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -8,7 +8,7 @@ * * * 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)); + /* + * 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), * 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_ScanKeys); - /* - * Initialize result tuple type and projection info. - */ - ExecAssignResultTypeFromTL(&indexstate->ss.ps); - ExecAssignScanProjectionInfo(&indexstate->ss); - /* * all done. */