mirror of https://github.com/postgres/postgres
pg_stat_statements: Add TAP test for testing restarts
This tests that pg_stat_statement contents are successfully kept across restart. (This similar to src/test/recovery/t/029_stats_restart.pl for the stats collector.) Reviewed-by: Michael Paquier <michael@paquier.xyz> Reviewed-by: Julien Rouhaud <rjuju123@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/40d1e4f2-835f-448f-a541-8ff5db75bf3d@eisentraut.org
This commit is contained in:
parent
742f6b3e6d
commit
4710b67d4d
|
@ -24,6 +24,8 @@ REGRESS = select dml cursors utility level_tracking planning \
|
||||||
# which typical installcheck users do not have (e.g. buildfarm clients).
|
# which typical installcheck users do not have (e.g. buildfarm clients).
|
||||||
NO_INSTALLCHECK = 1
|
NO_INSTALLCHECK = 1
|
||||||
|
|
||||||
|
TAP_TESTS = 1
|
||||||
|
|
||||||
ifdef USE_PGXS
|
ifdef USE_PGXS
|
||||||
PG_CONFIG = pg_config
|
PG_CONFIG = pg_config
|
||||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||||
|
|
|
@ -60,4 +60,9 @@ tests += {
|
||||||
# runningcheck users do not have (e.g. buildfarm clients).
|
# runningcheck users do not have (e.g. buildfarm clients).
|
||||||
'runningcheck': false,
|
'runningcheck': false,
|
||||||
},
|
},
|
||||||
|
'tap': {
|
||||||
|
'tests': [
|
||||||
|
't/010_restart.pl',
|
||||||
|
],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Copyright (c) 2023, PostgreSQL Global Development Group
|
||||||
|
|
||||||
|
# Tests for checking that pg_stat_statements contents are preserved
|
||||||
|
# across restarts.
|
||||||
|
|
||||||
|
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->append_conf('postgresql.conf',
|
||||||
|
"shared_preload_libraries = 'pg_stat_statements'");
|
||||||
|
$node->start;
|
||||||
|
|
||||||
|
$node->safe_psql('postgres', 'CREATE EXTENSION pg_stat_statements');
|
||||||
|
|
||||||
|
$node->safe_psql('postgres', 'CREATE TABLE t1 (a int)');
|
||||||
|
$node->safe_psql('postgres', 'SELECT a FROM t1');
|
||||||
|
|
||||||
|
is( $node->safe_psql(
|
||||||
|
'postgres',
|
||||||
|
"SELECT query FROM pg_stat_statements WHERE query NOT LIKE '%pg_stat_statements%' ORDER BY query"
|
||||||
|
),
|
||||||
|
"CREATE TABLE t1 (a int)\nSELECT a FROM t1",
|
||||||
|
'pg_stat_statements populated');
|
||||||
|
|
||||||
|
$node->restart;
|
||||||
|
|
||||||
|
is( $node->safe_psql(
|
||||||
|
'postgres',
|
||||||
|
"SELECT query FROM pg_stat_statements WHERE query NOT LIKE '%pg_stat_statements%' ORDER BY query"
|
||||||
|
),
|
||||||
|
"CREATE TABLE t1 (a int)\nSELECT a FROM t1",
|
||||||
|
'pg_stat_statements data kept across restart');
|
||||||
|
|
||||||
|
$node->append_conf('postgresql.conf', "pg_stat_statements.save = false");
|
||||||
|
$node->reload;
|
||||||
|
|
||||||
|
$node->restart;
|
||||||
|
|
||||||
|
is( $node->safe_psql(
|
||||||
|
'postgres',
|
||||||
|
"SELECT count(*) FROM pg_stat_statements WHERE query NOT LIKE '%pg_stat_statements%'"
|
||||||
|
),
|
||||||
|
'0',
|
||||||
|
'pg_stat_statements data not kept across restart with .save=false');
|
||||||
|
|
||||||
|
$node->stop;
|
||||||
|
|
||||||
|
done_testing();
|
Loading…
Reference in New Issue