Re: shared-memory based stats collector - Mailing list pgsql-hackers

From Kyotaro Horiguchi
Subject Re: shared-memory based stats collector
Date
Msg-id 20210325.202610.418404501306905378.horikyota.ntt@gmail.com
Whole thread Raw
In response to shared-memory based stats collector  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
List pgsql-hackers
At Mon, 15 Mar 2021 17:51:31 +0900 (JST), Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote in 
> At Fri, 12 Mar 2021 22:20:40 -0800, Andres Freund <andres@anarazel.de> wrote in 
> > Horiguchi-san, is there a chance you could add a few tests (on master)
> > that test/document the way stats are kept across "normal" restarts, and
> > thrown away after crash restarts/immediate restarts and also thrown away
> > graceful streaming rep shutdowns?
> 
> Roger. I'll give it a try.

Sorry, I forgot this. This is it.

retards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center
# Verify stats data persistence

use strict;
use warnings;
use PostgresNode;
use TestLib;
use Test::More tests => 6;

my $backup_name = 'my_backup';

# Initialize a test cluster
my $node_primary = get_new_node('primary');
$node_primary->init(allows_streaming => 1);
$node_primary->start;

$node_primary->safe_psql('postgres', 'CREATE TABLE t(); SELECT * from t;');
my $count =
  $node_primary->safe_psql('postgres',
                           'SELECT seq_scan FROM pg_stat_user_tables');
is($count, '1', "counter is incremented");

# Stas numbers are restored after graceful restart
$node_primary->restart;

$count =
  $node_primary->safe_psql('postgres',
                           'SELECT seq_scan FROM pg_stat_user_tables');
is($count, '1', "counter is correctly restored");

# Stas numbers are blown away after a crash
$node_primary->stop('immediate');
$node_primary->start;

$count =
  $node_primary->safe_psql('postgres',
                           'SELECT seq_scan FROM pg_stat_user_tables');
is($count, '0', "counter is reset after crash");

# Create a standby
$node_primary->backup($backup_name);
my $node_standby = get_new_node('standby');
$node_standby->init_from_backup($node_primary, $backup_name,
                                has_streaming => 1);
$node_standby->start;

# Stats numbers are initialized to zero
$count =
  $node_standby->safe_psql('postgres',
                           'SELECT seq_scan FROM pg_stat_user_tables');
is($count, '0', "counter is initialized");

# Stats numbers are incremented also on standby
$node_standby->safe_psql('postgres', 'SELECT * from t;');
$count =
  $node_standby->safe_psql('postgres',
                           'SELECT seq_scan FROM pg_stat_user_tables');
is($count, '1', "counter is incremented on standby");

# Stas numbers are always blown away even after graceful restart on standby
$node_primary->restart;

$count =
  $node_primary->safe_psql('postgres',
                           'SELECT seq_scan FROM pg_stat_user_tables');
is($count, '0', "counter is reset after restart on standby");

pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: row filtering for logical replication
Next
From: Dean Rasheed
Date:
Subject: Re: PoC/WIP: Extended statistics on expressions