diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-05-30 01:57:27 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-05-30 01:57:27 +0000 |
commit | 0832fb74dfc4128e6b2a7b38f84cbc4dd4bb46e5 (patch) | |
tree | 22677e61d576bf7e2cf397318364135249f15e32 /src/backend/utils/adt/ruleutils.c | |
parent | cfd9be939e9c516243c5b6a49ad1e1a9a38f1052 (diff) | |
download | postgresql-0832fb74dfc4128e6b2a7b38f84cbc4dd4bb46e5.tar.gz postgresql-0832fb74dfc4128e6b2a7b38f84cbc4dd4bb46e5.zip |
Fix longstanding oversight in ruleutils.c: it doesn't regurgitate
a FOR UPDATE clause, if one is present.
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
-rw-r--r-- | src/backend/utils/adt/ruleutils.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 56813eec39d..d10459a9bfe 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -3,7 +3,7 @@ * back to source text * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.196 2005/05/27 00:57:49 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.197 2005/05/30 01:57:27 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -1919,6 +1919,28 @@ get_select_query_def(Query *query, deparse_context *context, else get_rule_expr(query->limitCount, context, false); } + + /* Add the FOR UPDATE/SHARE clause if present */ + if (query->rowMarks != NIL) + { + if (query->forUpdate) + appendContextKeyword(context, " FOR UPDATE OF ", + -PRETTYINDENT_STD, PRETTYINDENT_STD, 0); + else + appendContextKeyword(context, " FOR SHARE OF ", + -PRETTYINDENT_STD, PRETTYINDENT_STD, 0); + sep = ""; + foreach(l, query->rowMarks) + { + int rtindex = lfirst_int(l); + RangeTblEntry *rte = rt_fetch(rtindex, query->rtable); + + appendStringInfo(buf, "%s%s", + sep, + quote_identifier(rte->eref->aliasname)); + sep = ", "; + } + } } static void |