summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/adt/ruleutils.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 59c818a803..bdf8978ecc 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -3260,6 +3260,18 @@ get_insert_query_def(Query *query, deparse_context *context)
if (select_rte && values_rte)
elog(ERROR, "both subquery and values RTEs in INSERT");
+#ifdef PGXC
+ /*
+ * If it's an INSERT ... SELECT or VALUES (...), (...), ...
+ * sql_statement is rewritten and assigned in RewriteQuery.
+ * Just return it here.
+ */
+ if (IS_PGXC_COORDINATOR && !IsConnFromCoord() && values_rte != NULL)
+ {
+ appendStringInfo(buf, "%s", query->sql_statement);
+ return;
+ }
+#endif
/*
* Start the query with INSERT INTO relname
*/