Re: Procedure support improvements

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: Greg Nancarrow <gregn4422(at)gmail(dot)com>, David Rader <david(dot)rader(at)gmail(dot)com>, pgsql-jdbc(at)lists(dot)postgresql(dot)org, psql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Procedure support improvements
Date: 2019-08-26 18:06:39
Message-ID: e96ed2592a394d48ea925ccb56583508d7eb9bf4.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-jdbc

[CC to -hackers]
Dave Cramer wrote:
> On Mon, 26 Aug 2019 at 13:43, Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
> wrote:
> > Dave Cramer wrote:
> > > As I said, I'd entertain a connection parameter that switched the
> > > CALL to call procedures but ideally you'd complain to the server
> > > folks to make Procedures useful.
> >
> > Apart from the obvious problem that procedures make life hard for
> > the JDBC driver, because it does not know if it shall render a call
> > as SELECT or CALL:
> > What is missing in PostgreSQL procedures to make them useful?
>
> being able to use transactions inside a procedure inside a
> transaction.

test=> CREATE OR REPLACE PROCEDURE testproc() LANGUAGE plpgsql AS
$$BEGIN PERFORM 42; COMMIT; PERFORM 'x'; END;$$;
CREATE PROCEDURE
test=> CALL testproc();
CALL
test=> BEGIN;
BEGIN
test=> CALL testproc();
ERROR: invalid transaction termination
CONTEXT: PL/pgSQL function testproc() line 1 at COMMIT

Oops.
I find that indeed surprising.

What is the rationale for this?

Yours,
Laurenz Albe

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Laurenz Albe 2019-08-26 18:08:05 Re: Procedure support improvements
Previous Message Dave Cramer 2019-08-26 17:48:23 Re: Procedure support improvements

Browse pgsql-jdbc by date

  From Date Subject
Next Message Laurenz Albe 2019-08-26 18:08:05 Re: Procedure support improvements
Previous Message Dave Cramer 2019-08-26 17:48:23 Re: Procedure support improvements