Error message with COMMIT/ROLLBACK within PL/pgSQL
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: PostgreSQL-development <pgsql-hackers@postgreSQL.org>
Date: 2010-10-28T10:47:28Z
Lists: pgsql-hackers
Attachments
- commit-in-plpgsql-errmsg-1.patch (text/x-diff) patch
This is not very user-friendly: postgres=# do $$ begin COMMIT; end; $$; ERROR: SPI_execute_plan_with_paramlist failed executing query "COMMIT": SPI_ERROR_TRANSACTION CONTEXT: PL/pgSQL function "inline_code_block" line 2 at SQL statement Clearly we don't support that, but seems like it would deserve a better error message. Curiously, we *do* give a better error message if you try that with EXECUTE: postgres=# do $$ begin EXECUTE 'COMMIT'; end; $$; ERROR: cannot begin/end transactions in PL/pgSQL HINT: Use a BEGIN block with an EXCEPTION clause instead. CONTEXT: PL/pgSQL function "inline_code_block" line 2 at EXECUTE statement Barring objections, I'll add the same error message to the non-execute codepath. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com