From b60be3f2f8d094da79e04c6eda888f401b09dc39 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 19 Nov 2002 23:22:00 +0000 Subject: Add an at-least-marginally-plausible method of estimating the number of groups produced by GROUP BY. This improves the accuracy of planning estimates for grouped subselects, and is needed to check whether a hashed aggregation plan risks memory overflow. --- src/backend/executor/nodeAgg.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/backend/executor/nodeAgg.c') diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index 5fa82ee9fa..0216f8ebde 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -45,7 +45,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.95 2002/11/13 00:39:47 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.96 2002/11/19 23:21:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -619,6 +619,9 @@ lookup_hash_entry(Agg *node, TupleTableSlot *slot) Datum attr; bool isNull; + /* rotate hashkey left 1 bit at each step */ + hashkey = (hashkey << 1) | ((hashkey & 0x80000000) ? 1 : 0); + attr = heap_getattr(tuple, att, tupdesc, &isNull); if (isNull) continue; /* treat nulls as having hash key 0 */ -- cgit v1.2.1