]> granicus.if.org Git - postgresql/commit
Make SELECT FOR UPDATE/SHARE work on inheritance trees, by having the plan
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 15 Nov 2008 19:43:47 +0000 (19:43 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 15 Nov 2008 19:43:47 +0000 (19:43 +0000)
commit0656ed3daa29b00c7c41ad44b407a7165f83d453
tree2167bd78fa501c3ffed1d0de842ded643c32500b
parent07c179a82b39ffbc172175382717706d90c714cd
Make SELECT FOR UPDATE/SHARE work on inheritance trees, by having the plan
return the tableoid as well as the ctid for any FOR UPDATE targets that
have child tables.  All child tables are listed in the ExecRowMark list,
but the executor just skips the ones that didn't produce the current row.

Curiously, this longstanding restriction doesn't seem to have been documented
anywhere; so no doc changes.
15 files changed:
src/backend/executor/execMain.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/prep/preptlist.c
src/backend/optimizer/prep/prepunion.c
src/backend/parser/analyze.c
src/backend/rewrite/rewriteManip.c
src/include/catalog/catversion.h
src/include/nodes/execnodes.h
src/include/nodes/parsenodes.h
src/test/regress/expected/portals.out
src/test/regress/sql/portals.sql