Skip to content

Commit 4f807be

Browse files
committed
Patch for ReScan of Group.
1 parent c1f1a2e commit 4f807be

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

src/backend/executor/execAmi.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.22 1998/07/15 22:16:17 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.23 1998/07/16 01:49:18 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -42,9 +42,11 @@
4242
#include "executor/nodeHashjoin.h"
4343
#include "executor/nodeHash.h"
4444
#include "executor/nodeAgg.h"
45+
#include "executor/nodeGroup.h"
4546
#include "executor/nodeResult.h"
4647
#include "executor/nodeUnique.h"
4748
#include "executor/nodeMergejoin.h"
49+
#include "executor/nodeAppend.h"
4850
#include "executor/nodeSubplan.h"
4951
#include "executor/execdebug.h"
5052
#include "optimizer/internal.h" /* for _TEMP_RELATION_ID_ */
@@ -353,6 +355,10 @@ ExecReScan(Plan *node, ExprContext *exprCtxt, Plan *parent)
353355
ExecReScanAgg((Agg *) node, exprCtxt, parent);
354356
break;
355357

358+
case T_Group:
359+
ExecReScanGroup((Group *) node, exprCtxt, parent);
360+
break;
361+
356362
case T_Result:
357363
ExecReScanResult((Result *) node, exprCtxt, parent);
358364
break;

src/backend/executor/nodeGroup.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* columns. (ie. tuples from the same group are consecutive)
1414
*
1515
* IDENTIFICATION
16-
* $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.19 1998/06/15 19:28:21 momjian Exp $
16+
* $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.20 1998/07/16 01:49:18 momjian Exp $
1717
*
1818
*-------------------------------------------------------------------------
1919
*/
@@ -417,3 +417,12 @@ sameGroup(HeapTuple oldtuple,
417417

418418
return TRUE;
419419
}
420+
421+
void
422+
ExecReScanGroup(Group *node, ExprContext *exprCtxt, Plan *parent)
423+
{
424+
GroupState *grpstate = node->grpstate;
425+
426+
grpstate->grp_useFirstTuple = FALSE;
427+
grpstate->grp_done = FALSE;
428+
}

src/include/executor/nodeGroup.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* Copyright (c) 1994, Regents of the University of California
88
*
9-
* $Id: nodeGroup.h,v 1.5 1997/11/26 01:12:46 momjian Exp $
9+
* $Id: nodeGroup.h,v 1.6 1998/07/16 01:49:19 momjian Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -21,5 +21,6 @@ extern TupleTableSlot *ExecGroup(Group *node);
2121
extern bool ExecInitGroup(Group *node, EState *estate, Plan *parent);
2222
extern int ExecCountSlotsGroup(Group *node);
2323
extern void ExecEndGroup(Group *node);
24+
extern void ExecReScanGroup(Group *node, ExprContext *exprCtxt, Plan *parent);
2425

2526
#endif /* NODEGROUP_H */

0 commit comments

Comments
 (0)