aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeTidscan.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-02-03 15:07:08 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-02-03 15:07:08 +0000
commit4cff59d8d540c441fb0c22dfaa517bc25aa5f794 (patch)
tree88b4c216d219582904d3d9d6a236bb9468fe148c /src/backend/executor/nodeTidscan.c
parent0d3e36b6687ae601551fb8047c10a68f2d6fb565 (diff)
downloadpostgresql-4cff59d8d540c441fb0c22dfaa517bc25aa5f794.tar.gz
postgresql-4cff59d8d540c441fb0c22dfaa517bc25aa5f794.zip
Tweak planner and executor to avoid doing ExecProject() in table scan
nodes where it's not really necessary. In many cases where the scan node is not the topmost plan node (eg, joins, aggregation), it's possible to just return the table tuple directly instead of generating an intermediate projection tuple. In preliminary testing, this reduced the CPU time needed for 'SELECT COUNT(*) FROM foo' by about 10%.
Diffstat (limited to 'src/backend/executor/nodeTidscan.c')
-rw-r--r--src/backend/executor/nodeTidscan.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c
index 3a51057f282..e1a2165709e 100644
--- a/src/backend/executor/nodeTidscan.c
+++ b/src/backend/executor/nodeTidscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.31 2003/01/12 22:01:38 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.32 2003/02/03 15:07:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -384,12 +384,6 @@ ExecInitTidScan(TidScan *node, EState *estate)
ExecInitScanTupleSlot(estate, &tidstate->ss);
/*
- * Initialize result tuple type and projection info.
- */
- ExecAssignResultTypeFromTL(&tidstate->ss.ps);
- ExecAssignProjectionInfo(&tidstate->ss.ps);
-
- /*
* get the tid node information
*/
tidList = (ItemPointerData *) palloc(length(node->tideval) * sizeof(ItemPointerData));
@@ -439,6 +433,12 @@ ExecInitTidScan(TidScan *node, EState *estate)
tidstate->ss.ps.chgParam = execParam;
/*
+ * Initialize result tuple type and projection info.
+ */
+ ExecAssignResultTypeFromTL(&tidstate->ss.ps);
+ ExecAssignScanProjectionInfo(&tidstate->ss);
+
+ /*
* all done.
*/
return tidstate;