pgsql: Support UPDATE/DELETE WHERE CURRENT OF cursor_name, per SQL

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Support UPDATE/DELETE WHERE CURRENT OF cursor_name, per SQL
Date: 2007-06-11 01:16:30
Message-ID: 20070611011630.8E4439FB507@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
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.

Modified Files:
--------------
pgsql/doc/src/sgml/ref:
declare.sgml (r1.40 -> r1.41)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/declare.sgml.diff?r1=1.40&r2=1.41)
delete.sgml (r1.30 -> r1.31)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/delete.sgml.diff?r1=1.30&r2=1.31)
update.sgml (r1.43 -> r1.44)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/update.sgml.diff?r1=1.43&r2=1.44)
pgsql/src/backend/executor:
Makefile (r1.25 -> r1.26)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/Makefile.diff?r1=1.25&r2=1.26)
execMain.c (r1.294 -> r1.295)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c.diff?r1=1.294&r2=1.295)
execQual.c (r1.218 -> r1.219)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execQual.c.diff?r1=1.218&r2=1.219)
nodeTidscan.c (r1.53 -> r1.54)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeTidscan.c.diff?r1=1.53&r2=1.54)
pgsql/src/backend/nodes:
copyfuncs.c (r1.377 -> r1.378)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.377&r2=1.378)
equalfuncs.c (r1.308 -> r1.309)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.308&r2=1.309)
outfuncs.c (r1.309 -> r1.310)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.309&r2=1.310)
readfuncs.c (r1.207 -> r1.208)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/readfuncs.c.diff?r1=1.207&r2=1.208)
pgsql/src/backend/optimizer/path:
clausesel.c (r1.85 -> r1.86)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/clausesel.c.diff?r1=1.85&r2=1.86)
costsize.c (r1.184 -> r1.185)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/costsize.c.diff?r1=1.184&r2=1.185)
tidpath.c (r1.29 -> r1.30)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/tidpath.c.diff?r1=1.29&r2=1.30)
pgsql/src/backend/optimizer/plan:
setrefs.c (r1.135 -> r1.136)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/setrefs.c.diff?r1=1.135&r2=1.136)
pgsql/src/backend/optimizer/prep:
prepunion.c (r1.141 -> r1.142)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepunion.c.diff?r1=1.141&r2=1.142)
pgsql/src/backend/optimizer/util:
clauses.c (r1.245 -> r1.246)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/clauses.c.diff?r1=1.245&r2=1.246)
var.c (r1.69 -> r1.70)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/var.c.diff?r1=1.69&r2=1.70)
pgsql/src/backend/parser:
analyze.c (r1.363 -> r1.364)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/analyze.c.diff?r1=1.363&r2=1.364)
gram.y (r2.591 -> r2.592)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y.diff?r1=2.591&r2=2.592)
keywords.c (r1.187 -> r1.188)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/keywords.c.diff?r1=1.187&r2=1.188)
parse_expr.c (r1.218 -> r1.219)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_expr.c.diff?r1=1.218&r2=1.219)
pgsql/src/backend/rewrite:
rewriteManip.c (r1.103 -> r1.104)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/rewrite/rewriteManip.c.diff?r1=1.103&r2=1.104)
pgsql/src/backend/utils/adt:
ruleutils.c (r1.259 -> r1.260)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/ruleutils.c.diff?r1=1.259&r2=1.260)
pgsql/src/include/executor:
executor.h (r1.139 -> r1.140)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h.diff?r1=1.139&r2=1.140)
pgsql/src/include/nodes:
nodes.h (r1.200 -> r1.201)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/nodes.h.diff?r1=1.200&r2=1.201)
primnodes.h (r1.130 -> r1.131)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/primnodes.h.diff?r1=1.130&r2=1.131)
pgsql/src/test/regress/expected:
portals.out (r1.13 -> r1.14)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/portals.out.diff?r1=1.13&r2=1.14)
pgsql/src/test/regress/sql:
portals.sql (r1.10 -> r1.11)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/portals.sql.diff?r1=1.10&r2=1.11)

Added Files:
-----------
pgsql/src/backend/executor:
execCurrent.c (r1.1)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execCurrent.c?rev=1.1&content-type=text/x-cvsweb-markup)

Browse pgsql-committers by date

  From Date Subject
Next Message User H-saito 2007-06-11 01:51:13 psqlodbc - psqlodbc: Various problems of configure cleared.
Previous Message User Pgunittest 2007-06-10 20:28:58 pgunittest - pgUnitTest: