diff options
Diffstat (limited to 'src/backend/executor/functions.c')
-rw-r--r-- | src/backend/executor/functions.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c index ce49c471d49..93292d6b1ca 100644 --- a/src/backend/executor/functions.c +++ b/src/backend/executor/functions.c @@ -498,7 +498,16 @@ init_execution_state(List *queryTree_list, else stmt = (Node *) pg_plan_query(queryTree, 0, NULL); - /* Precheck all commands for validity in a function */ + /* + * Precheck all commands for validity in a function. This should + * generally match the restrictions spi.c applies. + */ + if (IsA(stmt, CopyStmt) && + ((CopyStmt *) stmt)->filename == NULL) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot COPY to/from client in a SQL function"))); + if (IsA(stmt, TransactionStmt)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), |