Re: Stored procedures and out parameters

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.

In response to

Responses

Browse pgsql-hackers by date

  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