diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/commands/copy.c | 6 | ||||
-rw-r--r-- | src/backend/parser/parse_cte.c | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 3ac731803bd..49924e476af 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -273,6 +273,12 @@ DoCopy(ParseState *pstate, const CopyStmt *stmt, { Assert(stmt->query); + /* MERGE is allowed by parser, but unimplemented. Reject for now */ + if (IsA(stmt->query, MergeStmt)) + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("MERGE not supported in COPY")); + query = makeNode(RawStmt); query->stmt = stmt->query; query->stmt_location = stmt_location; diff --git a/src/backend/parser/parse_cte.c b/src/backend/parser/parse_cte.c index efb4af706e1..8fc86586085 100644 --- a/src/backend/parser/parse_cte.c +++ b/src/backend/parser/parse_cte.c @@ -126,6 +126,13 @@ transformWithClause(ParseState *pstate, WithClause *withClause) CommonTableExpr *cte = (CommonTableExpr *) lfirst(lc); ListCell *rest; + /* MERGE is allowed by parser, but unimplemented. Reject for now */ + if (IsA(cte->ctequery, MergeStmt)) + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("MERGE not supported in WITH query"), + parser_errposition(pstate, cte->location)); + for_each_cell(rest, withClause->ctes, lnext(withClause->ctes, lc)) { CommonTableExpr *cte2 = (CommonTableExpr *) lfirst(rest); |