OSDN Git Service

Support UPDATE/DELETE WHERE CURRENT OF cursor_name, per SQL standard.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Jun 2007 01:16:30 +0000 (01:16 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Jun 2007 01:16:30 +0000 (01:16 +0000)
commit6808f1b1de0ebcd4af558ba84c3226b2027f55ea
treeebd12580d3aaca6ec79b5d99563a1eff02451e88
parent85d72f05167b87bc44464b2eabea8538f1fd1e45
Support UPDATE/DELETE WHERE CURRENT OF cursor_name, per SQL standard.

Along the way, allow FOR UPDATE in non-WITH-HOLD cursors; there may once
have been a reason to disallow that, but it seems to work now, and it's
really rather necessary if you want to select a row via a cursor and then
update it in a concurrent-safe fashion.

Original patch by Arul Shaji, rather heavily editorialized by Tom Lane.
30 files changed:
doc/src/sgml/ref/declare.sgml
doc/src/sgml/ref/delete.sgml
doc/src/sgml/ref/update.sgml
src/backend/executor/Makefile
src/backend/executor/execCurrent.c [new file with mode: 0644]
src/backend/executor/execMain.c
src/backend/executor/execQual.c
src/backend/executor/nodeTidscan.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/clausesel.c
src/backend/optimizer/path/costsize.c
src/backend/optimizer/path/tidpath.c
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/prep/prepunion.c
src/backend/optimizer/util/clauses.c
src/backend/optimizer/util/var.c
src/backend/parser/analyze.c
src/backend/parser/gram.y
src/backend/parser/keywords.c
src/backend/parser/parse_expr.c
src/backend/rewrite/rewriteManip.c
src/backend/utils/adt/ruleutils.c
src/include/executor/executor.h
src/include/nodes/nodes.h
src/include/nodes/primnodes.h
src/test/regress/expected/portals.out
src/test/regress/sql/portals.sql