diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-10-26 21:38:24 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-10-26 21:38:24 +0000 |
commit | 2f35b4efdbec6c161ca9bd491d6345134910c425 (patch) | |
tree | 2424351bcc12a8ddf2b716b28f53d2c37c79e507 /src/include/executor | |
parent | c9476bafdb1b97d0d21d92788f93298962145479 (diff) | |
download | postgresql-2f35b4efdbec6c161ca9bd491d6345134910c425.tar.gz |
Re-implement LIMIT/OFFSET as a plan node type, instead of a hack in
ExecutorRun. This allows LIMIT to work in a view. Also, LIMIT in a
cursor declaration will behave in a reasonable fashion, whereas before
it was overridden by the FETCH count.
Diffstat (limited to 'src/include/executor')
-rw-r--r-- | src/include/executor/executor.h | 4 | ||||
-rw-r--r-- | src/include/executor/nodeLimit.h | 25 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 5c330915e7..9fe59b031a 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: executor.h,v 1.51 2000/09/12 21:07:09 tgl Exp $ + * $Id: executor.h,v 1.52 2000/10/26 21:38:03 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -54,7 +54,7 @@ extern HeapTuple ExecRemoveJunk(JunkFilter *junkfilter, TupleTableSlot *slot); */ extern TupleDesc ExecutorStart(QueryDesc *queryDesc, EState *estate); extern TupleTableSlot *ExecutorRun(QueryDesc *queryDesc, EState *estate, - int feature, Node *limoffset, Node *limcount); + int feature, long count); extern void ExecutorEnd(QueryDesc *queryDesc, EState *estate); extern void ExecConstraints(char *caller, Relation rel, TupleTableSlot *slot, EState *estate); diff --git a/src/include/executor/nodeLimit.h b/src/include/executor/nodeLimit.h new file mode 100644 index 0000000000..4ed16545fc --- /dev/null +++ b/src/include/executor/nodeLimit.h @@ -0,0 +1,25 @@ +/*------------------------------------------------------------------------- + * + * nodeLimit.h + * + * + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * $Id: nodeLimit.h,v 1.1 2000/10/26 21:38:03 tgl Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef NODELIMIT_H +#define NODELIMIT_H + +#include "nodes/plannodes.h" + +extern TupleTableSlot *ExecLimit(Limit *node); +extern bool ExecInitLimit(Limit *node, EState *estate, Plan *parent); +extern int ExecCountSlotsLimit(Limit *node); +extern void ExecEndLimit(Limit *node); +extern void ExecReScanLimit(Limit *node, ExprContext *exprCtxt, Plan *parent); + +#endif /* NODELIMIT_H */ |