Re: BUG #18134: ROW_COUNT do not set to 0 when psql's \gset command get no rows returned - Mailing list pgsql-bugs

From Japin Li
Subject Re: BUG #18134: ROW_COUNT do not set to 0 when psql's \gset command get no rows returned
Date
Msg-id MEYP282MB1669351F137C61C19FA9749BB6C2A@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
Whole thread Raw
In response to BUG #18134: ROW_COUNT do not set to 0 when psql's \gset command get no rows returned  (PG Bug reporting form <noreply@postgresql.org>)
Responses Re: BUG #18134: ROW_COUNT do not set to 0 when psql's \gset command get no rows returned
Re: BUG #18134: ROW_COUNT do not set to 0 when psql's \gset command get no rows returned
List pgsql-bugs
On Tue, 26 Sep 2023 at 09:26, PG Bug reporting form <noreply@postgresql.org> wrote:
> 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.!!!!

It seems SaveResultVariables() was lost when executing failed. Attached fix it.

diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index ede197bebe..cf6c7778ee 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -1660,8 +1660,8 @@ ExecQueryAndProcessResults(const char *query,
         }
 
         /* set variables on last result if all went well */
-        if (!is_watch && last && success)
-            SetResultVariables(result, true);
+        if (!is_watch && last)
+            SetResultVariables(result, success);
 
         ClearOrSaveResult(result);
         result = next_result;

-- 
Regrads,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.


pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #18135: Incorrect memory access occurs when attaching a partition with an index
Next
From: Japin Li
Date:
Subject: Re: Bug of psql meta-command \sf & \sv