mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-17 02:12:56 +00:00
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
import pytest
|
|
from fixtures.neon_fixtures import NeonEnv
|
|
from fixtures.pg_version import PgVersion
|
|
|
|
|
|
#
|
|
# Test that pgstat statistic is preserved across sessions
|
|
#
|
|
def test_pgstat(neon_simple_env: NeonEnv):
|
|
env = neon_simple_env
|
|
if env.pg_version == PgVersion.V14:
|
|
pytest.skip("PG14 doesn't support pgstat statistic persistence")
|
|
|
|
env.pageserver.allowed_errors.append(".*this timeline is using deprecated aux file policy V1.*")
|
|
|
|
n = 10000
|
|
endpoint = env.endpoints.create_start("main")
|
|
|
|
con = endpoint.connect()
|
|
cur = con.cursor()
|
|
|
|
cur.execute("create table t(x integer)")
|
|
cur.execute(f"insert into t values (generate_series(1,{n}))")
|
|
cur.execute("vacuum analyze t")
|
|
cur.execute("select sum(x) from t")
|
|
cur.execute("update t set x=x+1")
|
|
|
|
cur.execute("select pg_stat_force_next_flush()")
|
|
|
|
cur.execute(
|
|
"select seq_scan,seq_tup_read,n_tup_ins,n_tup_upd,n_live_tup,n_dead_tup, vacuum_count,analyze_count from pg_stat_user_tables"
|
|
)
|
|
rec = cur.fetchall()[0]
|
|
assert rec == (2, n * 2, n, n, n * 2, n, 1, 1)
|
|
|
|
endpoint.stop()
|
|
endpoint.start()
|
|
|
|
con = endpoint.connect()
|
|
cur = con.cursor()
|
|
|
|
cur.execute(
|
|
"select seq_scan,seq_tup_read,n_tup_ins,n_tup_upd,n_live_tup,n_dead_tup, vacuum_count,analyze_count from pg_stat_user_tables"
|
|
)
|
|
rec = cur.fetchall()[0]
|
|
assert rec == (2, n * 2, n, n, n * 2, n, 1, 1)
|
|
|
|
cur.execute("update t set x=x+1")
|
|
|
|
# stop without checkpoint
|
|
endpoint.stop(mode="immediate")
|
|
endpoint.start()
|
|
|
|
con = endpoint.connect()
|
|
cur = con.cursor()
|
|
|
|
cur.execute(
|
|
"select seq_scan,seq_tup_read,n_tup_ins,n_tup_upd,n_live_tup,n_dead_tup, vacuum_count,analyze_count from pg_stat_user_tables"
|
|
)
|
|
rec = cur.fetchall()[0]
|
|
# pgstat information should be discarded in case of abnormal termination
|
|
assert rec == (0, 0, 0, 0, 0, 0, 0, 0)
|