Give a more specific error message if you try to COMMIT, ROLLBACK or COPY
FROM STDIN in PL/pgSQL. We alread did this for dynamic EXECUTE statements, ie. "EXECUTE 'COMMIT'", but not otherwise.
This commit is contained in:
parent
6c3c7b533e
commit
f184de351d
|
@ -2889,6 +2889,17 @@ exec_stmt_execsql(PLpgSQL_execstate *estate,
|
||||||
exec_set_found(estate, false);
|
exec_set_found(estate, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* Some SPI errors deserve specific error messages */
|
||||||
|
case SPI_ERROR_COPY:
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("cannot COPY to/from client in PL/pgSQL")));
|
||||||
|
case SPI_ERROR_TRANSACTION:
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("cannot begin/end transactions in PL/pgSQL"),
|
||||||
|
errhint("Use a BEGIN block with an EXCEPTION clause instead.")));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
elog(ERROR, "SPI_execute_plan_with_paramlist failed executing query \"%s\": %s",
|
elog(ERROR, "SPI_execute_plan_with_paramlist failed executing query \"%s\": %s",
|
||||||
expr->query, SPI_result_code_string(rc));
|
expr->query, SPI_result_code_string(rc));
|
||||||
|
|
Loading…
Reference in New Issue