Re: Documentation fix on pgbench \aset command
От | Yugo Nagata |
---|---|
Тема | Re: Documentation fix on pgbench \aset command |
Дата | |
Msg-id | 20250627103643.d6e8b91de79c1a66d4c96810@sraoss.co.jp обсуждение исходный текст |
Ответ на | Re: Documentation fix on pgbench \aset command (Fujii Masao <masao.fujii@oss.nttdata.com>) |
Список | pgsql-hackers |
On Fri, 27 Jun 2025 01:45:16 +0900 Fujii Masao <masao.fujii@oss.nttdata.com> wrote: > > > On 2025/06/27 1:31, Yugo Nagata wrote: > > On Fri, 27 Jun 2025 01:05:47 +0900 > > Fujii Masao <masao.fujii@oss.nttdata.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@sraoss.co.jp>
Вложения
В списке pgsql-hackers по дате отправления: