text: from fixtures.zenith_fixtures import ZenithEnv, check_restored_datadir_content
  from fixtures.log_helper import log
  
  pytest_plugins = ("fixtures.zenith_fixtures")
  
  
  # 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
      # Create a branch for us
      env.zenith_cli(["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)
  