diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2006-04-30 18:30:40 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2006-04-30 18:30:40 +0000 |
commit | 986085a7f08c72219abf47f8b968213e81ab943c (patch) | |
tree | a80d30e59cffd042ed9adb024afc5f5d6bf00e16 /src/backend/rewrite/rewriteManip.c | |
parent | 931bfc96644b8f51a49161f780d43506e55d2b13 (diff) | |
download | postgresql-986085a7f08c72219abf47f8b968213e81ab943c.tar.gz postgresql-986085a7f08c72219abf47f8b968213e81ab943c.zip |
Improve the representation of FOR UPDATE/FOR SHARE so that we can
support both FOR UPDATE and FOR SHARE in one command, as well as both
NOWAIT and normal WAIT behavior. The more general code is actually
simpler and cleaner.
Diffstat (limited to 'src/backend/rewrite/rewriteManip.c')
-rw-r--r-- | src/backend/rewrite/rewriteManip.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c index 175df7a695a..906e7c4a04b 100644 --- a/src/backend/rewrite/rewriteManip.c +++ b/src/backend/rewrite/rewriteManip.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.98 2006/04/05 22:11:55 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.99 2006/04/30 18:30:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -240,7 +240,11 @@ OffsetVarNodes(Node *node, int offset, int sublevels_up) if (qry->resultRelation) qry->resultRelation += offset; foreach(l, qry->rowMarks) - lfirst_int(l) += offset; + { + RowMarkClause *rc = (RowMarkClause *) lfirst(l); + + rc->rti += offset; + } } query_tree_walker(qry, OffsetVarNodes_walker, (void *) &context, 0); @@ -395,8 +399,10 @@ ChangeVarNodes(Node *node, int rt_index, int new_index, int sublevels_up) qry->resultRelation = new_index; foreach(l, qry->rowMarks) { - if (lfirst_int(l) == rt_index) - lfirst_int(l) = new_index; + RowMarkClause *rc = (RowMarkClause *) lfirst(l); + + if (rc->rti == rt_index) + rc->rti = new_index; } } query_tree_walker(qry, ChangeVarNodes_walker, |