diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-12-28 18:54:01 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-12-28 18:54:01 +0000 |
commit | 95b07bc7f5010233f52f9d11da74e2e5b653b0a7 (patch) | |
tree | 48f5858bf4eca1bfb316ef02bb959ca85f568e0a /src/backend/executor/execProcnode.c | |
parent | 38e9348282e9d078487147ba8a85aebec54e3a08 (diff) | |
download | postgresql-95b07bc7f5010233f52f9d11da74e2e5b653b0a7.tar.gz postgresql-95b07bc7f5010233f52f9d11da74e2e5b653b0a7.zip |
Support window functions a la SQL:2008.
Hitoshi Harada, with some kibitzing from Heikki and Tom.
Diffstat (limited to 'src/backend/executor/execProcnode.c')
-rw-r--r-- | src/backend/executor/execProcnode.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/backend/executor/execProcnode.c b/src/backend/executor/execProcnode.c index e689ec00f8c..cd610c895c1 100644 --- a/src/backend/executor/execProcnode.c +++ b/src/backend/executor/execProcnode.c @@ -12,7 +12,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execProcnode.c,v 1.63 2008/10/04 21:56:53 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execProcnode.c,v 1.64 2008/12/28 18:53:55 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -85,6 +85,7 @@ #include "executor/nodeBitmapHeapscan.h" #include "executor/nodeBitmapIndexscan.h" #include "executor/nodeBitmapOr.h" +#include "executor/nodeCtescan.h" #include "executor/nodeFunctionscan.h" #include "executor/nodeGroup.h" #include "executor/nodeHash.h" @@ -104,7 +105,7 @@ #include "executor/nodeTidscan.h" #include "executor/nodeUnique.h" #include "executor/nodeValuesscan.h" -#include "executor/nodeCtescan.h" +#include "executor/nodeWindowAgg.h" #include "executor/nodeWorktablescan.h" #include "miscadmin.h" @@ -260,6 +261,11 @@ ExecInitNode(Plan *node, EState *estate, int eflags) estate, eflags); break; + case T_WindowAgg: + result = (PlanState *) ExecInitWindowAgg((WindowAgg *) node, + estate, eflags); + break; + case T_Unique: result = (PlanState *) ExecInitUnique((Unique *) node, estate, eflags); @@ -425,6 +431,10 @@ ExecProcNode(PlanState *node) result = ExecAgg((AggState *) node); break; + case T_WindowAggState: + result = ExecWindowAgg((WindowAggState *) node); + break; + case T_UniqueState: result = ExecUnique((UniqueState *) node); break; @@ -601,6 +611,10 @@ ExecCountSlotsNode(Plan *node) case T_Agg: return ExecCountSlotsAgg((Agg *) node); + case T_WindowAgg: + return ExecCountSlotsWindowAgg((WindowAgg *) node); + break; + case T_Unique: return ExecCountSlotsUnique((Unique *) node); @@ -749,6 +763,10 @@ ExecEndNode(PlanState *node) ExecEndAgg((AggState *) node); break; + case T_WindowAggState: + ExecEndWindowAgg((WindowAggState *) node); + break; + case T_UniqueState: ExecEndUnique((UniqueState *) node); break; |