diff --git a/src/backend/executor/execGrouping.c b/src/backend/executor/execGrouping.c index 2fc5fc7eebdbb2bb556dd22b279e9a3318a07738..38a2a974ec1afcced88e38bcab5e3d8e6d109ab4 100644 --- a/src/backend/executor/execGrouping.c +++ b/src/backend/executor/execGrouping.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execGrouping.c,v 1.18 2006/03/05 15:58:25 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execGrouping.c,v 1.19 2006/06/28 17:05:49 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -389,7 +389,7 @@ LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, /* Copy the first tuple into the table context */ MemoryContextSwitchTo(hashtable->tablecxt); - entry->firstTuple = ExecCopySlotTuple(slot); + entry->firstTuple = ExecCopySlotMinimalTuple(slot); *isnew = true; } @@ -405,23 +405,23 @@ LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, /* * Compute the hash value for a tuple * - * The passed-in key is a pointer to TupleHashEntryData. In an actual - * hash table entry, the firstTuple field therein points to a physical - * tuple. LookupTupleHashEntry sets up a dummy TupleHashEntryData with - * a NULL firstTuple field --- that cues us to look at the inputslot instead. - * This convention avoids the need to materialize virtual input tuples - * unless they actually need to get copied into the table. + * The passed-in key is a pointer to TupleHashEntryData. In an actual hash + * table entry, the firstTuple field points to a tuple (in MinimalTuple + * format). LookupTupleHashEntry sets up a dummy TupleHashEntryData with a + * NULL firstTuple field --- that cues us to look at the inputslot instead. + * This convention avoids the need to materialize virtual input tuples unless + * they actually need to get copied into the table. * * CurTupleHashTable must be set before calling this, since dynahash.c * doesn't provide any API that would let us get at the hashtable otherwise. * * Also, the caller must select an appropriate memory context for running - * the hash functions. (dynahash.c doesn't change CurrentMemoryContext.) + * the hash functions. (dynahash.c doesn't change CurrentMemoryContext.) */ static uint32 TupleHashTableHash(const void *key, Size keysize) { - HeapTuple tuple = ((const TupleHashEntryData *) key)->firstTuple; + MinimalTuple tuple = ((const TupleHashEntryData *) key)->firstTuple; TupleTableSlot *slot; TupleHashTable hashtable = CurTupleHashTable; int numCols = hashtable->numCols; @@ -439,7 +439,7 @@ TupleHashTableHash(const void *key, Size keysize) /* Process a tuple already stored in the table */ /* (this case never actually occurs in current dynahash.c code) */ slot = hashtable->tableslot; - ExecStoreTuple(tuple, slot, InvalidBuffer, false); + ExecStoreMinimalTuple(tuple, slot, false); } for (i = 0; i < numCols; i++) @@ -480,10 +480,10 @@ TupleHashTableHash(const void *key, Size keysize) static int TupleHashTableMatch(const void *key1, const void *key2, Size keysize) { - HeapTuple tuple1 = ((const TupleHashEntryData *) key1)->firstTuple; + MinimalTuple tuple1 = ((const TupleHashEntryData *) key1)->firstTuple; #ifdef USE_ASSERT_CHECKING - HeapTuple tuple2 = ((const TupleHashEntryData *) key2)->firstTuple; + MinimalTuple tuple2 = ((const TupleHashEntryData *) key2)->firstTuple; #endif TupleTableSlot *slot1; TupleTableSlot *slot2; @@ -497,7 +497,7 @@ TupleHashTableMatch(const void *key1, const void *key2, Size keysize) */ Assert(tuple1 != NULL); slot1 = hashtable->tableslot; - ExecStoreTuple(tuple1, slot1, InvalidBuffer, false); + ExecStoreMinimalTuple(tuple1, slot1, false); Assert(tuple2 == NULL); slot2 = hashtable->inputslot; diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index dfb9938715fff94ee622cae48815e0492dd5e27a..84a651b0ad6d3b926fe3386ab6254f4e8883979e 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -61,7 +61,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeAgg.c,v 1.140 2006/06/21 18:39:42 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeAgg.c,v 1.141 2006/06/28 17:05:49 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -957,10 +957,9 @@ agg_retrieve_hash_table(AggState *aggstate) * Store the copied first input tuple in the tuple table slot reserved * for it, so that it can be used in ExecProject. */ - ExecStoreTuple(entry->shared.firstTuple, - firstSlot, - InvalidBuffer, - false); + ExecStoreMinimalTuple(entry->shared.firstTuple, + firstSlot, + false); pergroup = entry->pergroup; diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c index c6663c7eac2827d7f30d70d599433e14e4ac3c4f..593eff4a5f9339c987f9c187a43c27d81a32d19d 100644 --- a/src/backend/executor/nodeSubplan.c +++ b/src/backend/executor/nodeSubplan.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeSubplan.c,v 1.75 2006/06/16 18:42:22 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeSubplan.c,v 1.76 2006/06/28 17:05:49 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -572,8 +572,7 @@ findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot) ResetTupleHashIterator(hashtable, &hashiter); while ((entry = ScanTupleHashTable(&hashiter)) != NULL) { - ExecStoreTuple(entry->firstTuple, hashtable->tableslot, - InvalidBuffer, false); + ExecStoreMinimalTuple(entry->firstTuple, hashtable->tableslot, false); if (!execTuplesUnequal(hashtable->tableslot, slot, numCols, keyColIdx, hashtable->eqfunctions, diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 7a9a651e1e5d173bf372ea68c292308e555e9d29..97deb8b15c7bc599b57e8f1c91629facc0822b0e 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.150 2006/04/30 18:30:40 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.151 2006/06/28 17:05:49 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -367,7 +367,7 @@ typedef struct TupleHashTableData *TupleHashTable; typedef struct TupleHashEntryData { /* firstTuple must be the first field in this struct! */ - HeapTuple firstTuple; /* copy of first tuple in this group */ + MinimalTuple firstTuple; /* copy of first tuple in this group */ /* there may be additional data beyond the end of this struct */ } TupleHashEntryData; /* VARIABLE LENGTH STRUCT */