aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-11-15 19:43:47 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-11-15 19:43:47 +0000
commit0656ed3daa29b00c7c41ad44b407a7165f83d453 (patch)
tree2167bd78fa501c3ffed1d0de842ded643c32500b /src/backend/parser
parent07c179a82b39ffbc172175382717706d90c714cd (diff)
downloadpostgresql-0656ed3daa29b00c7c41ad44b407a7165f83d453.tar.gz
postgresql-0656ed3daa29b00c7c41ad44b407a7165f83d453.zip
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.
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/analyze.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 2a99d099d8e..21694ea56e5 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -17,7 +17,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.382 2008/10/07 01:47:54 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.383 2008/11/15 19:43:46 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2049,8 +2049,10 @@ applyLockingClause(Query *qry, Index rtindex, bool forUpdate, bool noWait)
/* Make a new RowMarkClause */
rc = makeNode(RowMarkClause);
rc->rti = rtindex;
+ rc->prti = rtindex;
rc->forUpdate = forUpdate;
rc->noWait = noWait;
+ rc->isParent = false;
qry->rowMarks = lappend(qry->rowMarks, rc);
}