OSDN Git Service

Restructure parsetree representation of DECLARE CURSOR: now it's a
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 10 Mar 2003 03:53:52 +0000 (03:53 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 10 Mar 2003 03:53:52 +0000 (03:53 +0000)
commitaa83bc04e089e13f2746ba55720e5993268c46f5
tree1b5c0082e22385789d3581792af4e1a823f835ba
parentb9e8ffcd5d1a3d45b2f697ea944931f56367c86b
Restructure parsetree representation of DECLARE CURSOR: now it's a
utility statement (DeclareCursorStmt) with a SELECT query dangling from
it, rather than a SELECT query with a few unusual fields in it.  Add
code to determine whether a planned query can safely be run backwards.
If DECLARE CURSOR specifies SCROLL, ensure that the plan can be run
backwards by adding a Materialize plan node if it can't.  Without SCROLL,
you get an error if you try to fetch backwards from a cursor that can't
handle it.  (There is still some discussion about what the exact
behavior should be, but this is necessary infrastructure in any case.)
Along the way, make EXPLAIN DECLARE CURSOR work.
40 files changed:
doc/src/sgml/ref/declare.sgml
doc/src/sgml/ref/explain.sgml
doc/src/sgml/ref/fetch.sgml
doc/src/sgml/ref/move.sgml
doc/src/sgml/ref/prepare.sgml
src/backend/commands/explain.c
src/backend/commands/portalcmds.c
src/backend/executor/execAmi.c
src/backend/executor/execMain.c
src/backend/executor/spi.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/planmain.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/subselect.c
src/backend/optimizer/prep/prepjointree.c
src/backend/optimizer/prep/prepunion.c
src/backend/optimizer/util/clauses.c
src/backend/parser/analyze.c
src/backend/parser/gram.y
src/backend/parser/parse_clause.c
src/backend/parser/parse_type.c
src/backend/tcop/postgres.c
src/backend/tcop/pquery.c
src/backend/tcop/utility.c
src/backend/utils/mmgr/portalmem.c
src/include/catalog/catversion.h
src/include/commands/portalcmds.h
src/include/executor/executor.h
src/include/executor/spi.h
src/include/nodes/nodes.h
src/include/nodes/parsenodes.h
src/include/optimizer/planmain.h
src/include/optimizer/planner.h
src/include/tcop/pquery.h
src/include/utils/portal.h