Thread

Commits

  1. pgbench: Clarify documentation for \gset and \aset.

  1. Documentation fix on pgbench \aset command

    Yugo Nagata <nagata@sraoss.co.jp> — 2025-06-26T09:01:25Z

    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.
    
    Therefore, I’ve attached a patch to remove this part from the documentation.
    
    [1] https://www.postgresql.org/message-id/flat/alpine.DEB.2.20.1802191909500.21372%40lancre
    [2] https://www.postgresql.org/message-id/flat/alpine.DEB.2.21.1904081914200.2529%40lancre
    
    Best regards,
    Yugo Nagata
    -- 
    Yugo Nagata <nagata@sraoss.co.jp>
    
  2. Re: Documentation fix on pgbench \aset command

    Fujii Masao <masao.fujii@oss.nttdata.com> — 2025-06-26T16:05:47Z

    
    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.
    
    Regards,
    
    -- 
    Fujii Masao
    NTT DATA Japan Corporation
    
    
    
    
    
  3. Re: Documentation fix on pgbench \aset command

    Yugo Nagata <nagata@sraoss.co.jp> — 2025-06-26T16:31:48Z

    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.
    
    To detect it correctly, we would need to reconsider the variable existence check,
    or introduce a new meta-command or a special variable that indicates the number of
    rows returned by the previous query, and so on.
    
    Regards,
    Yugo Nagata
    
    
    -- 
    Yugo Nagata <nagata@sraoss.co.jp>
    
    
    
    
  4. Re: Documentation fix on pgbench \aset command

    Fujii Masao <masao.fujii@oss.nttdata.com> — 2025-06-26T16:45:16Z

    
    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.
    
    
    > To detect it correctly, we would need to reconsider the variable existence check,
    > or introduce a new meta-command or a special variable that indicates the number of
    > rows returned by the previous query, and so on.
    
    +1
    
    Regards,
    
    -- 
    Fujii Masao
    NTT DATA Japan Corporation
    
    
    
    
    
  5. Re: Documentation fix on pgbench \aset command

    Yugo Nagata <nagata@sraoss.co.jp> — 2025-06-27T01:36:43Z

    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>
    
  6. Re: Documentation fix on pgbench \aset command

    Fujii Masao <masao.fujii@gmail.com> — 2025-09-22T07:19:14Z

    On Fri, Jun 27, 2025 at 10:37 AM Yugo Nagata <nagata@sraoss.co.jp> wrote:
    > 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.
    
    Thanks for updating the patch!
    
    While reviewing the descriptions for \gset and \aset, I noticed they're listed
    as a single term. I think it would be clearer to list them separately.
    Also, there's no explanation of what happens if the query with \gset returns
    zero or multiple rows, so I'd like to add that too. Thought?
    
    I've attached an updated version of the patch with these changes applied.
    
    Regards,
    
    -- 
    Fujii Masao
    
  7. Re: Documentation fix on pgbench \aset command

    Yugo Nagata <nagata@sraoss.co.jp> — 2025-09-25T02:12:24Z

    On Mon, 22 Sep 2025 16:19:14 +0900
    Fujii Masao <masao.fujii@gmail.com> wrote:
    
    > On Fri, Jun 27, 2025 at 10:37 AM Yugo Nagata <nagata@sraoss.co.jp> wrote:
    > > 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.
    > 
    > Thanks for updating the patch!
    > 
    > While reviewing the descriptions for \gset and \aset, I noticed they're listed
    > as a single term. I think it would be clearer to list them separately.
    > Also, there's no explanation of what happens if the query with \gset returns
    > zero or multiple rows, so I'd like to add that too. Thought?
    > 
    > I've attached an updated version of the patch with these changes applied.
    
    Thank you for your suggestion and updating the patch.
    I'm fine with your version since it is clearer.
    
    Regards,
    Yugo Nagata
    
    -- 
    Yugo Nagata <nagata@sraoss.co.jp>
    
    
    
    
  8. Re: Documentation fix on pgbench \aset command

    Fujii Masao <masao.fujii@gmail.com> — 2025-09-25T03:11:51Z

    On Thu, Sep 25, 2025 at 11:12 AM Yugo Nagata <nagata@sraoss.co.jp> wrote:
    > Thank you for your suggestion and updating the patch.
    > I'm fine with your version since it is clearer.
    
    I've pushed the patch. Thanks!
    
    Regards,
    
    -- 
    Fujii Masao