From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Vladimir Sitnikov <sitnikov(dot)vladimir(at)gmail(dot)com> |
Cc: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>, Robert Haas <robertmhaas(at)gmail(dot)com>, Shay Rojansky <roji(at)roji(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Stored procedures and out parameters |
Date: | 2018-07-24 16:28:01 |
Message-ID: | CAKFQuwavkcm2kDRyvF45t5APsx+Yfs4NgYWURx7kX+rx0eWwmA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jul 23, 2018 at 12:07 PM, Vladimir Sitnikov <
sitnikov(dot)vladimir(at)gmail(dot)com> wrote:
> 2) Just a side note: `CALL my_proc()` is not suitable for functions. That
> looks weird.
> Is the client expected to lookup system catalogs in order to tell if
> `my_proc` is procedure or function and use either `call my_proc` or `select
> * from my_proc()`?
> Issuing `call my_function()` fails with 42883 ERROR: my_func(unknown) is
> not a procedure
>
> Note: JDBC defines two options to call a stored procedure:
> {?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
> {call <procedure-name>[(<arg1>,<arg2>, ...)]}
> see https://docs.oracle.com/javase/9/docs/api/java/sql/
> CallableStatement.html
>
> There's no notion if the called object is a procedure or function.
> Note: PostgreSQL can have a function that `returns void`, and it is hard
> to tell if {call test()} refers to a function or procedure.
>
> Can functions and procedures be unified at the backend level?
> For instance, support "CALL" for both of them.
> Or support "select * ..." for both of them.
>
>
IMO JDBC will need to version branch the textual transform of {call} to
"CALL" in v11 and continue with the transform to SELECT in v10 and
earlier. Recommend adding an override property to force SELECT syntax in
v11. This regardless of whether the server accepts functions as the
object of a CALL; though if it does the override will then likely be a
fail-safe device instead of a fundamental decision point for the developer.
I'm not familiar with the JDBC enough to posit whether adding a catalog
lookup is something that should be done; but I'd probably not go down that
path without first trying the version+override solution alone.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2018-07-24 16:37:46 | Re: Making "COPY partitioned_table FROM" faster |
Previous Message | Phil Florent | 2018-07-24 16:23:03 | RE: [Proposal] Add accumulated statistics for wait event |