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

Jov <amutu@amutu.com>

From: Jov <amutu@amutu.com>
To: Japin Li <japinli@hotmail.com>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2023-09-30T06:36:18Z
Lists: pgsql-bugs
I conformed this patch fix the problem, thanks!

Japin Li <japinli@hotmail.com> 于2023年9月28日周四 10:51写道:

>
> 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.
>
>
> --
> Regrads,
> Japin Li
> ChengDu WenWu Information Technology Co., Ltd.
>
>

Commits

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