diff options
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r-- | src/backend/rewrite/rewriteHandler.c | 32 |
1 files changed, 2 insertions, 30 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index b3a18134539..89ef9a356d2 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.186.2.1 2009/09/02 17:52:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.186.2.2 2009/10/27 17:11:30 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1242,35 +1242,7 @@ markQueryForLocking(Query *qry, Node *jtnode, bool forUpdate, bool noWait) markQueryForLocking(rte->subquery, (Node *) rte->subquery->jointree, forUpdate, noWait); } - else if (rte->rtekind == RTE_CTE) - { - /* - * We allow FOR UPDATE/SHARE of a WITH query to be propagated into - * the WITH, but it doesn't seem very sane to allow this for a - * reference to an outer-level WITH (compare - * transformLockingClause). Which simplifies life here. - */ - CommonTableExpr *cte = NULL; - ListCell *lc; - - if (rte->ctelevelsup > 0 || rte->self_reference) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("SELECT FOR UPDATE/SHARE cannot be applied to an outer-level WITH query"))); - foreach(lc, qry->cteList) - { - cte = (CommonTableExpr *) lfirst(lc); - if (strcmp(cte->ctename, rte->ctename) == 0) - break; - } - if (lc == NULL) /* shouldn't happen */ - elog(ERROR, "could not find CTE \"%s\"", rte->ctename); - /* should be analyzed by now */ - Assert(IsA(cte->ctequery, Query)); - markQueryForLocking((Query *) cte->ctequery, - (Node *) ((Query *) cte->ctequery)->jointree, - forUpdate, noWait); - } + /* other RTE types are unaffected by FOR UPDATE */ } else if (IsA(jtnode, FromExpr)) { |