mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Refactor LogicalTapeSet/LogicalTape interface.
All the tape functions, like LogicalTapeRead and LogicalTapeWrite, now take a LogicalTape as argument, instead of LogicalTapeSet+tape number. You can create any number of LogicalTapes in a single LogicalTapeSet, and you don't need to decide the number upfront, when you create the tape set. This makes the tape management in hash agg spilling in nodeAgg.c simpler. Discussion: https://www.postgresql.org/message-id/420a0ec7-602c-d406-1e75-1ef7ddc58d83%40iki.fi Reviewed-by: Peter Geoghegan, Zhihong Yu, John Naylor
This commit is contained in:
@ -41,6 +41,7 @@ struct ExprContext;
|
||||
struct RangeTblEntry; /* avoid including parsenodes.h here */
|
||||
struct ExprEvalStep; /* avoid including execExpr.h everywhere */
|
||||
struct CopyMultiInsertBuffer;
|
||||
struct LogicalTapeSet;
|
||||
|
||||
|
||||
/* ----------------
|
||||
@ -2316,7 +2317,7 @@ typedef struct AggState
|
||||
bool table_filled; /* hash table filled yet? */
|
||||
int num_hashes;
|
||||
MemoryContext hash_metacxt; /* memory for hash table itself */
|
||||
struct HashTapeInfo *hash_tapeinfo; /* metadata for spill tapes */
|
||||
struct LogicalTapeSet *hash_tapeset; /* tape set for hash spill tapes */
|
||||
struct HashAggSpill *hash_spills; /* HashAggSpill for each grouping set,
|
||||
* exists only during first pass */
|
||||
TupleTableSlot *hash_spill_rslot; /* for reading spill files */
|
||||
|
Reference in New Issue
Block a user