Thread

  1. Error message with COMMIT/ROLLBACK within PL/pgSQL

    Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> — 2010-10-28T10:47:28Z

    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