diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-03-14 04:41:13 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-03-14 04:41:13 +0000 |
commit | a9b05bdc8330b378cd2df7910ca0beaa500223fa (patch) | |
tree | 18be88094b6d17df65925023582e84c34bf152db /src/include/executor/executor.h | |
parent | d1022ce3a1a8b61798028a8fae46e7e458d77cff (diff) | |
download | postgresql-a9b05bdc8330b378cd2df7910ca0beaa500223fa.tar.gz postgresql-a9b05bdc8330b378cd2df7910ca0beaa500223fa.zip |
Avoid O(N^2) overhead in repeated nocachegetattr calls when columns of
a tuple are being accessed via ExecEvalVar and the attcacheoff shortcut
isn't usable (due to nulls and/or varlena columns). To do this, cache
Datums extracted from a tuple in the associated TupleTableSlot.
Also some code cleanup in and around the TupleTable handling.
Atsushi Ogawa with some kibitzing by Tom Lane.
Diffstat (limited to 'src/include/executor/executor.h')
-rw-r--r-- | src/include/executor/executor.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index f07bdd89d18..8eb357636ad 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/executor/executor.h,v 1.115 2004/12/31 22:03:29 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/executor/executor.h,v 1.116 2005/03/14 04:41:13 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -158,10 +158,10 @@ extern void ExecAssignScanProjectionInfo(ScanState *node); /* * prototypes from functions in execTuples.c */ -extern TupleTable ExecCreateTupleTable(int initialSize); +extern TupleTable ExecCreateTupleTable(int tableSize); extern void ExecDropTupleTable(TupleTable table, bool shouldFree); -extern TupleTableSlot *ExecAllocTableSlot(TupleTable table); extern TupleTableSlot *MakeTupleTableSlot(void); +extern TupleTableSlot *ExecAllocTableSlot(TupleTable table); extern TupleTableSlot *ExecStoreTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer, @@ -169,7 +169,6 @@ extern TupleTableSlot *ExecStoreTuple(HeapTuple tuple, extern TupleTableSlot *ExecClearTuple(TupleTableSlot *slot); extern void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc, bool shouldFree); -extern void ExecSetSlotDescriptorIsNew(TupleTableSlot *slot, bool isNew); extern void ExecInitResultTupleSlot(EState *estate, PlanState *planstate); extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate); extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate); |