diff options
author | Simon Riggs <simon@2ndQuadrant.com> | 2018-04-03 12:13:59 +0100 |
---|---|---|
committer | Simon Riggs <simon@2ndQuadrant.com> | 2018-04-03 12:13:59 +0100 |
commit | aa3faa3c7a7a49b3318059ccaf79bc1886a64707 (patch) | |
tree | 1ccf93dda1b6481727d416f1dedfa556a704247a /src/backend/parser/parse_merge.c | |
parent | 83454e3c2b28141c0db01c7d2027e01040df5249 (diff) | |
download | postgresql-aa3faa3c7a7a49b3318059ccaf79bc1886a64707.tar.gz postgresql-aa3faa3c7a7a49b3318059ccaf79bc1886a64707.zip |
WITH support in MERGE
Author: Peter Geoghegan
Recursive support removed, no tests
Docs added by me
Diffstat (limited to 'src/backend/parser/parse_merge.c')
-rw-r--r-- | src/backend/parser/parse_merge.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/backend/parser/parse_merge.c b/src/backend/parser/parse_merge.c index d6d6876961c..eb4c615ce1c 100644 --- a/src/backend/parser/parse_merge.c +++ b/src/backend/parser/parse_merge.c @@ -24,6 +24,7 @@ #include "parser/parsetree.h" #include "parser/parser.h" #include "parser/parse_clause.h" +#include "parser/parse_cte.h" #include "parser/parse_merge.h" #include "parser/parse_relation.h" #include "parser/parse_target.h" @@ -202,6 +203,19 @@ transformMergeStmt(ParseState *pstate, MergeStmt *stmt) Assert(pstate->p_ctenamespace == NIL); qry->commandType = CMD_MERGE; + qry->hasRecursive = false; + + /* process the WITH clause independently of all else */ + if (stmt->withClause) + { + if (stmt->withClause->recursive) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("WITH RECURSIVE is not supported for MERGE statement"))); + + qry->cteList = transformWithClause(pstate, stmt->withClause); + qry->hasModifyingCTE = pstate->p_hasModifyingCTE; + } /* * Check WHEN clauses for permissions and sanity |