BUG #18134: ROW_COUNT do not set to 0 when psql's \gset command get no rows returned

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: amutu@amutu.com
Date: 2023-09-26T01:26:14Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      18134
Logged by:          amutu
Email address:      amutu@amutu.com
PostgreSQL version: 15.4
Operating system:   FreeBSD 13.2-RELEASE amd64
Description:        

reproduce steps:

$psql postgres
psql (15.4)
Type "help" for help.

postgres=# select * from cmdq  where status= 'new' \gset
no rows returned for \gset
postgres=# \echo :ROW_COUNT
:ROW_COUNT
postgres=# select * from cmdq;
   cmd   |  src_ip   | worker | status |              ts               | id

---------+-----------+--------+--------+-------------------------------+----
 ls /tmp | 127.0.0.1 |        | done   | 2023-09-23 14:39:59.047309+08 | 
1
(1 row)

postgres=# \echo :ROW_COUNT
1
postgres=# select * from cmdq  where status= 'new' \gset
no rows returned for \gset
postgres=# \echo :ROW_COUNT
1
------------------------------------------------
from the psql doc:
ROW_COUNT
The number of rows returned or affected by the last SQL query, !!!!or 0 if
the query failed or did not report a row count.!!!!

Commits

  1. psql: Set variables from query result on failure when printing tuples