Am 07.09.2024 um 18:35 schrieb David G. Johnston:
On Monday, September 2, 2024, PG Doc comments form
<nore...@postgresql.org <mailto:nore...@postgresql.org>> wrote:

    The following documentation comment has been logged on the website:

    Page: https://www.postgresql.org/docs/16/libpq-exec.html
    <https://www.postgresql.org/docs/16/libpq-exec.html>
    Description:

    https://www.postgresql.org/docs/16/libpq-exec.html#LIBPQ-PQRESULTSTATUS 
<https://www.postgresql.org/docs/16/libpq-exec.html#LIBPQ-PQRESULTSTATUS>
    Existing text:
    If the result status is PGRES_TUPLES_OK, PGRES_SINGLE_TUPLE, or
    PGRES_TUPLES_CHUNK, then the functions described below can be used to
    retrieve the rows returned by the query. Note that a SELECT command that
    happens to retrieve zero rows still shows PGRES_TUPLES_OK.
    PGRES_COMMAND_OK
    is for commands that can never return rows (INSERT or UPDATE without a
    RETURNING clause, etc.). A response of PGRES_EMPTY_QUERY might
    indicate a
    bug in the client software.
    Add:
    A successful call to a procedure with OUT parameters will set
    PGRES_TUPLES_OK and return one row with the functions described below.


Defining whether a given SQL query is or is not going to return tuples
is not the responsibility of this paragraph.  The documentation for CALL
is where this knowledge is imparted.  I’m not hard set against adding
something here but it also doesn’t really seem like a need.

If I were to do something I’d probably add “or a CALL of a procedure
lacking OUT parameters, etc” as another example in the parenthetical
talking about an omitted returning clause.

David J.


You are right, the documentation for CALL states that a row is being
returned.
However if you read
https://www.postgresql.org/docs/current/xproc.html#XPROC
'Procedures do not return a function value; hence CREATE PROCEDURE lacks
a RETURNS clause. However, procedures can instead return data to their
callers via output parameters'
this does not sound like a row being returned. Also plpgsql does not do
it when you invoke CALL.
The libpq documentation does not mention CALL of a stored procedure with
out params at all. Maybe it should, - somewhere.

Christoph


Reply via email to