text: --
  -- Hot Standby tests
  --
  -- hs_primary_extremes.sql
  --
  
  DROP TABLE IF EXISTS hs_extreme;
  
  CREATE TABLE hs_extreme (
      col1 integer
  );
  
  CREATE OR REPLACE FUNCTION hs_subxids (n integer)
      RETURNS void
      LANGUAGE plpgsql
      AS $$
  BEGIN
      IF n <= 0 THEN
          RETURN;
      END IF;
      INSERT INTO hs_extreme
      VALUES (n);
      PERFORM
          hs_subxids (n - 1);
      RETURN;
  EXCEPTION
      WHEN raise_exception THEN
          NULL;
  END;
  
  $$;
  
  BEGIN;
  SELECT
      hs_subxids (257);
  ROLLBACK;
  
  BEGIN;
  SELECT
      hs_subxids (257);
  COMMIT;
  
  SET client_min_messages = 'warning';
  
  CREATE OR REPLACE FUNCTION hs_locks_create (n integer)
      RETURNS void
      LANGUAGE plpgsql
      AS $$
  BEGIN
      IF n <= 0 THEN
          CHECKPOINT;
          RETURN;
      END IF;
      EXECUTE 'CREATE TABLE hs_locks_' || n::text || ' ()';
      PERFORM
          hs_locks_create (n - 1);
      RETURN;
  EXCEPTION
      WHEN raise_exception THEN
          NULL;
  END;
  
  $$;
  
  CREATE OR REPLACE FUNCTION hs_locks_drop (n integer)
      RETURNS void
      LANGUAGE plpgsql
      AS $$
  BEGIN
      IF n <= 0 THEN
          CHECKPOINT;
          RETURN;
      END IF;
      EXECUTE 'DROP TABLE IF EXISTS hs_locks_' || n::text;
      PERFORM
          hs_locks_drop (n - 1);
      RETURN;
  EXCEPTION
      WHEN raise_exception THEN
          NULL;
  END;
  
  $$;
  
  BEGIN;
  SELECT
      hs_locks_drop (257);
  SELECT
      hs_locks_create (257);
  SELECT
      count(*) > 257
  FROM
      pg_locks;
  ROLLBACK;
  
  BEGIN;
  SELECT
      hs_locks_drop (257);
  SELECT
      hs_locks_create (257);
  SELECT
      count(*) > 257
  FROM
      pg_locks;
  COMMIT;
  
  SELECT
      hs_locks_drop (257);
  
  SELECT
      pg_switch_wal ();
  
  