Re: Documentation fix on pgbench \aset command

From: Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>
To: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
Cc: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Documentation fix on pgbench \aset command
Date: 2025-06-27 01:36:43
Message-ID: 20250627103643.d6e8b91de79c1a66d4c96810@sraoss.co.jp
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, 27 Jun 2025 01:45:16 +0900
Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:

>
>
> On 2025/06/27 1:31, Yugo Nagata wrote:
> > On Fri, 27 Jun 2025 01:05:47 +0900
> > Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
> >
> >>
> >>
> >> On 2025/06/26 18:01, Yugo Nagata wrote:
> >>> Hi,
> >>>
> >>> The current documentation of pgbench’s \aset command states:
> >>>
> >>> “If a query returns no row, no assignment is made and the variable
> >>> can be tested for existence to detect this.”
> >>>
> >>> However, this is inaccurate, since variable existence check (like \if :{?var})
> >>> is not yet supported, although such a feature was proposed in [1] and discussed
> >>> again in [2], where \aset itself was introduced.
> >>
> >> Right.
> >>
> >>
> >>> Therefore, I’ve attached a patch to remove this part from the documentation.
> >>
> >> Or would it be worth documenting an alternative way to detect when no rows are
> >> returned? For example:
> >>
> >> If a query returns no rows, no variables are assigned. You can detect
> >> this by setting an initial value to the variable before running the query
> >> and checking whether it changes.
> >
> > That's what I thought as well, but I didn’t do it because we can’t distinguish it
> > from the case where the query returns the same value as the initial one.
>
> Could we use a value that the query is guaranteed not to return as the initial value?
> For example, in SELECT id AS myid FROM test \aset, if the id column is of type integer,
> we could initialize myid to FALSE.

This will work if we assume that the query never returns the initial value.
I've attached a updated patch that fix the documentation as below:

If a query returns no rows, no assignment is made. You can detect
this by initializing the variable beforehand with a value that the query is
assumed never to return, and then checking whether it changes.

Regards,
Yugo Nagata

--
Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>

Attachment Content-Type Size
v2_fix_doc_pgbench_aset.ptach application/octet-stream 1.1 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message jian he 2025-06-27 02:09:28 Re: SQL:2023 JSON simplified accessor support
Previous Message Michael Paquier 2025-06-27 01:34:53 Re: pg_logical_slot_get_changes waits continously for a partial WAL record spanning across 2 pages