1--
2-- Hot Standby tests
3--
4-- hs_primary_extremes.sql
5--
6
7drop table if exists hs_extreme;
8create table hs_extreme (col1 integer);
9
10CREATE OR REPLACE FUNCTION hs_subxids (n integer)
11RETURNS void
12LANGUAGE plpgsql
13AS $$
14    BEGIN
15      IF n <= 0 THEN RETURN; END IF;
16      INSERT INTO hs_extreme VALUES (n);
17      PERFORM hs_subxids(n - 1);
18      RETURN;
19    EXCEPTION WHEN raise_exception THEN NULL; END;
20$$;
21
22BEGIN;
23SELECT hs_subxids(257);
24ROLLBACK;
25BEGIN;
26SELECT hs_subxids(257);
27COMMIT;
28
29set client_min_messages = 'warning';
30
31CREATE OR REPLACE FUNCTION hs_locks_create (n integer)
32RETURNS void
33LANGUAGE plpgsql
34AS $$
35    BEGIN
36      IF n <= 0 THEN
37		CHECKPOINT;
38		RETURN;
39	  END IF;
40      EXECUTE 'CREATE TABLE hs_locks_' || n::text || ' ()';
41      PERFORM hs_locks_create(n - 1);
42      RETURN;
43    EXCEPTION WHEN raise_exception THEN NULL; END;
44$$;
45
46CREATE OR REPLACE FUNCTION hs_locks_drop (n integer)
47RETURNS void
48LANGUAGE plpgsql
49AS $$
50    BEGIN
51      IF n <= 0 THEN
52		CHECKPOINT;
53		RETURN;
54	  END IF;
55	  EXECUTE 'DROP TABLE IF EXISTS hs_locks_' || n::text;
56      PERFORM hs_locks_drop(n - 1);
57      RETURN;
58    EXCEPTION WHEN raise_exception THEN NULL; END;
59$$;
60
61BEGIN;
62SELECT hs_locks_drop(257);
63SELECT hs_locks_create(257);
64SELECT count(*) > 257 FROM pg_locks;
65ROLLBACK;
66BEGIN;
67SELECT hs_locks_drop(257);
68SELECT hs_locks_create(257);
69SELECT count(*) > 257 FROM pg_locks;
70COMMIT;
71SELECT hs_locks_drop(257);
72
73SELECT pg_switch_xlog();
74