From aa3faa3c7a7a49b3318059ccaf79bc1886a64707 Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Tue, 3 Apr 2018 12:13:59 +0100 Subject: WITH support in MERGE Author: Peter Geoghegan Recursive support removed, no tests Docs added by me --- src/backend/parser/parse_merge.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/backend/parser/parse_merge.c') 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 -- cgit v1.2.3