mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 13:32:57 +00:00
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from fixtures.zenith_fixtures import ZenithEnv, check_restored_datadir_content
|
|
from fixtures.log_helper import log
|
|
|
|
|
|
# Test subtransactions
|
|
#
|
|
# The pg_subxact SLRU is not preserved on restarts, and doesn't need to be
|
|
# maintained in the pageserver, so subtransactions are not very exciting for
|
|
# Zenith. They are included in the commit record though and updated in the
|
|
# CLOG.
|
|
def test_subxacts(zenith_simple_env: ZenithEnv, test_output_dir):
|
|
env = zenith_simple_env
|
|
env.zenith_cli.create_branch("test_subxacts", "empty")
|
|
pg = env.postgres.create_start('test_subxacts')
|
|
|
|
log.info("postgres is running on 'test_subxacts' branch")
|
|
pg_conn = pg.connect()
|
|
cur = pg_conn.cursor()
|
|
|
|
cur.execute('''
|
|
CREATE TABLE t1(i int, j int);
|
|
''')
|
|
|
|
cur.execute('select pg_switch_wal();')
|
|
|
|
# Issue 100 transactions, with 1000 subtransactions in each.
|
|
for i in range(100):
|
|
cur.execute('begin')
|
|
for j in range(1000):
|
|
cur.execute(f'savepoint sp{j}')
|
|
cur.execute(f'insert into t1 values ({i}, {j})')
|
|
cur.execute('commit')
|
|
|
|
# force wal flush
|
|
cur.execute('checkpoint')
|
|
|
|
# Check that we can restore the content of the datadir correctly
|
|
check_restored_datadir_content(test_output_dir, env, pg)
|