aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/ruleutils.c24
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