Thread

Commits

  1. Fix BackgroundPsql's set_query_timer_restart() issue without argument.

  2. Refactor background psql TAP functions

  1. BackgroundPsql's set_query_timer_restart() may not work

    Masahiko Sawada <sawada.mshk@gmail.com> — 2023-11-28T01:17:32Z

    Hi,
    
    While adding some TAP tests, I realized that set_query_timer_restart()
    in BackgroundPsql may not work. Specifically, it seems not to work
    unless we pass an argument to the function. Here is the test script I
    used:
    
    use strict;
    use warnings;
    use PostgreSQL::Test::Cluster;
    use PostgreSQL::Test::Utils;
    use Test::More;
    
    my $node = PostgreSQL::Test::Cluster->new('main');
    $node->init;
    $node->start;
    
    $PostgreSQL::Test::Utils::timeout_default = 5;
    my $bg_psql = $node->background_psql('postgres', on_error_stop => 1);
    
    $bg_psql->query_safe("select pg_sleep(3)");
    $bg_psql->set_query_timer_restart();
    $bg_psql->query_safe("select pg_sleep(3)");
    $bg_psql->quit;
    is(1,1,"dummy");
    
    $node->stop;
    done_testing();
    
    
    If calling set_query_timer_restart() works properly, this test would
    pass since we reset the query timeout before executing the second
    pg_sleep(3). However, this test fail on my environment unless I use
    set_query_timer_restart(1) (i.e. passing something to the function).
    
    Currently authentication/t/001_password.pl is the sole user of
    set_query_timer_restart() function. I think we should define a value
    to query_timer_restart in set_query_timer_restart() function even if
    no argument is passed, like the patch attached, or we should change
    the caller to pass 1 to the function.
    
    Regards,
    
    -- 
    Masahiko Sawada
    Amazon Web Services: https://aws.amazon.com
    
  2. Re: BackgroundPsql's set_query_timer_restart() may not work

    Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> — 2023-11-28T06:28:27Z

    On Tue, Nov 28, 2023 at 6:48 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
    >
    > Hi,
    >
    > While adding some TAP tests, I realized that set_query_timer_restart()
    > in BackgroundPsql may not work. Specifically, it seems not to work
    > unless we pass an argument to the function. Here is the test script I
    > used:
    >
    > If calling set_query_timer_restart() works properly, this test would
    > pass since we reset the query timeout before executing the second
    > pg_sleep(3). However, this test fail on my environment unless I use
    > set_query_timer_restart(1) (i.e. passing something to the function).
    
    Right.
    
    > Currently authentication/t/001_password.pl is the sole user of
    > set_query_timer_restart() function. I think we should define a value
    > to query_timer_restart in set_query_timer_restart() function even if
    > no argument is passed, like the patch attached, or we should change
    > the caller to pass 1 to the function.
    
    It is added by commit 664d7575 and I agree that calling the function
    without argument doesn't reset the query_timer_restart as intended.
    
    A nitpick on the patch - how about honoring the passed-in parameter
    with something like $self->{query_timer_restart} = 1 if !defined
    $self->{query_timer_restart}; instead of just setting it to 1 (a value
    other than undef) $self->{query_timer_restart} = 1;?
    
    --
    Bharath Rupireddy
    PostgreSQL Contributors Team
    RDS Open Source Databases
    Amazon Web Services: https://aws.amazon.com
    
    
    
    
  3. Re: BackgroundPsql's set_query_timer_restart() may not work

    Tom Lane <tgl@sss.pgh.pa.us> — 2023-11-28T06:53:11Z

    Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> writes:
    > A nitpick on the patch - how about honoring the passed-in parameter
    > with something like $self->{query_timer_restart} = 1 if !defined
    > $self->{query_timer_restart}; instead of just setting it to 1 (a value
    > other than undef) $self->{query_timer_restart} = 1;?
    
    I wondered about that too, but the evidence of existing callers is
    that nobody cares.  If we did make the code do something like that,
    (a) I don't think your fragment is right, and (b) we'd need to rewrite
    the function's comment to explain it.  I'm not seeing a reason to
    think it's worth spending effort on.
    
    			regards, tom lane
    
    
    
    
  4. Re: BackgroundPsql's set_query_timer_restart() may not work

    Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> — 2023-11-29T07:30:32Z

    On Tue, Nov 28, 2023 at 12:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    >
    > Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> writes:
    > > A nitpick on the patch - how about honoring the passed-in parameter
    > > with something like $self->{query_timer_restart} = 1 if !defined
    > > $self->{query_timer_restart}; instead of just setting it to 1 (a value
    > > other than undef) $self->{query_timer_restart} = 1;?
    >
    > I wondered about that too, but the evidence of existing callers is
    > that nobody cares.  If we did make the code do something like that,
    > (a) I don't think your fragment is right, and (b) we'd need to rewrite
    > the function's comment to explain it.  I'm not seeing a reason to
    > think it's worth spending effort on.
    
    Hm. I don't mind doing just the $self->{query_timer_restart} = 1; like
    in Sawada-san's patch.
    
    -- 
    Bharath Rupireddy
    PostgreSQL Contributors Team
    RDS Open Source Databases
    Amazon Web Services: https://aws.amazon.com
    
    
    
    
  5. Re: BackgroundPsql's set_query_timer_restart() may not work

    Masahiko Sawada <sawada.mshk@gmail.com> — 2023-11-29T08:19:11Z

    On Wed, Nov 29, 2023 at 4:30 PM Bharath Rupireddy
    <bharath.rupireddyforpostgres@gmail.com> wrote:
    >
    > On Tue, Nov 28, 2023 at 12:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > >
    > > Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> writes:
    > > > A nitpick on the patch - how about honoring the passed-in parameter
    > > > with something like $self->{query_timer_restart} = 1 if !defined
    > > > $self->{query_timer_restart}; instead of just setting it to 1 (a value
    > > > other than undef) $self->{query_timer_restart} = 1;?
    > >
    > > I wondered about that too, but the evidence of existing callers is
    > > that nobody cares.  If we did make the code do something like that,
    > > (a) I don't think your fragment is right, and (b) we'd need to rewrite
    > > the function's comment to explain it.  I'm not seeing a reason to
    > > think it's worth spending effort on.
    
    Agreed.
    
    > Hm. I don't mind doing just the $self->{query_timer_restart} = 1; like
    > in Sawada-san's patch.
    
    Okay, I've attached the patch that I'm going to push through v16,
    barring any objections.
    
    Regards,
    
    -- 
    Masahiko Sawada
    Amazon Web Services: https://aws.amazon.com
    
  6. Re: BackgroundPsql's set_query_timer_restart() may not work

    Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> — 2023-11-29T10:48:46Z

    On Wed, Nov 29, 2023 at 1:49 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
    >
    > On Wed, Nov 29, 2023 at 4:30 PM Bharath Rupireddy
    > <bharath.rupireddyforpostgres@gmail.com> wrote:
    > >
    > > On Tue, Nov 28, 2023 at 12:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > > >
    > > > Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> writes:
    > > > > A nitpick on the patch - how about honoring the passed-in parameter
    > > > > with something like $self->{query_timer_restart} = 1 if !defined
    > > > > $self->{query_timer_restart}; instead of just setting it to 1 (a value
    > > > > other than undef) $self->{query_timer_restart} = 1;?
    > > >
    > > > I wondered about that too, but the evidence of existing callers is
    > > > that nobody cares.  If we did make the code do something like that,
    > > > (a) I don't think your fragment is right, and (b) we'd need to rewrite
    > > > the function's comment to explain it.  I'm not seeing a reason to
    > > > think it's worth spending effort on.
    >
    > Agreed.
    >
    > > Hm. I don't mind doing just the $self->{query_timer_restart} = 1; like
    > > in Sawada-san's patch.
    >
    > Okay, I've attached the patch that I'm going to push through v16,
    > barring any objections.
    
    How about the commit message summary 'Fix TAP function
    set_query_timer_restart() issue without argument.'? Also, it's good to
    specify the commit 664d7575 that introduced the TAP function in the
    commit message description.
    
    -- 
    Bharath Rupireddy
    PostgreSQL Contributors Team
    RDS Open Source Databases
    Amazon Web Services: https://aws.amazon.com
    
    
    
    
  7. Re: BackgroundPsql's set_query_timer_restart() may not work

    Masahiko Sawada <sawada.mshk@gmail.com> — 2023-11-30T01:18:50Z

    On Wed, Nov 29, 2023 at 7:48 PM Bharath Rupireddy
    <bharath.rupireddyforpostgres@gmail.com> wrote:
    >
    > On Wed, Nov 29, 2023 at 1:49 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
    > >
    > > On Wed, Nov 29, 2023 at 4:30 PM Bharath Rupireddy
    > > <bharath.rupireddyforpostgres@gmail.com> wrote:
    > > >
    > > > On Tue, Nov 28, 2023 at 12:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > > > >
    > > > > Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> writes:
    > > > > > A nitpick on the patch - how about honoring the passed-in parameter
    > > > > > with something like $self->{query_timer_restart} = 1 if !defined
    > > > > > $self->{query_timer_restart}; instead of just setting it to 1 (a value
    > > > > > other than undef) $self->{query_timer_restart} = 1;?
    > > > >
    > > > > I wondered about that too, but the evidence of existing callers is
    > > > > that nobody cares.  If we did make the code do something like that,
    > > > > (a) I don't think your fragment is right, and (b) we'd need to rewrite
    > > > > the function's comment to explain it.  I'm not seeing a reason to
    > > > > think it's worth spending effort on.
    > >
    > > Agreed.
    > >
    > > > Hm. I don't mind doing just the $self->{query_timer_restart} = 1; like
    > > > in Sawada-san's patch.
    > >
    > > Okay, I've attached the patch that I'm going to push through v16,
    > > barring any objections.
    >
    > How about the commit message summary 'Fix TAP function
    > set_query_timer_restart() issue without argument.'? Also, it's good to
    > specify the commit 664d7575 that introduced the TAP function in the
    > commit message description.
    
    Thanks! I've incorporated your comment and pushed the patch.
    
    Regards,
    
    
    --
    Masahiko Sawada
    Amazon Web Services: https://aws.amazon.com