From 35ab52ed4c1fa9c07080ffbe679cb12984afa91b Mon Sep 17 00:00:00 2001 From: Pavan Deolasee Date: Wed, 12 Nov 2014 12:50:01 +0530 Subject: Allow DMLs inside a plpgsql procedure on the coordinator. We still block them on the datanodes, but its safe to execute them on a coordinator. --- src/pl/plpgsql/src/pl_exec.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 0a6ae59552..acb2f4c049 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -36,6 +36,9 @@ #include "utils/rel.h" #include "utils/snapmgr.h" #include "utils/typcache.h" +#ifdef XCP +#include "pgxc/pgxc.h" +#endif static const char *const raise_skip_msg = "RAISE"; @@ -3049,13 +3052,20 @@ exec_stmt_execsql(PLpgSQL_execstate *estate, q->commandType == CMD_DELETE) stmt->mod_stmt = true; /* PGXCTODO: Support a better parameter interface for XC with DMLs */ +#ifdef XCP + if (IS_PGXC_DATANODE && (q->commandType == CMD_INSERT || +#else if (q->commandType == CMD_INSERT || +#endif q->commandType == CMD_UPDATE || q->commandType == CMD_DELETE) +#ifdef XCP + ) +#endif ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), #ifdef XCP - errmsg("Postgres-XL does not support DML queries in PL/pgSQL"))); + errmsg("Postgres-XL does not support DML queries in PL/pgSQL on Datanodes"))); #else errmsg("Postgres-XC does not support DML queries in PL/pgSQL"))); #endif -- cgit v1.2.3