From: Tom Lane Date: Mon, 30 May 2005 01:57:27 +0000 (+0000) Subject: Fix longstanding oversight in ruleutils.c: it doesn't regurgitate X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=14acef3456da55b0d290d7633c57caf56a2625b0;p=users%2Fbernd%2Fpostgres.git Fix longstanding oversight in ruleutils.c: it doesn't regurgitate a FOR UPDATE clause, if one is present. --- diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 0a3b9c60a0..e7808c1778 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -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