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