OSDN Git Service

Added a regtest for partitioned table.
[pghintplan/pg_hint_plan.git] / sql / ut-init.sql
1 SET search_path TO public;
2
3 CREATE EXTENSION pg_stat_statements;
4 CREATE EXTENSION btree_gist;
5 CREATE EXTENSION btree_gin;
6
7 CREATE ROLE super_user
8   SUPERUSER
9   NOCREATEDB
10   NOCREATEROLE
11   NOINHERIT
12   NOLOGIN
13   NOREPLICATION
14   CONNECTION LIMIT 1;
15 CREATE ROLE normal_user
16   NOSUPERUSER
17   NOCREATEDB
18   NOCREATEROLE
19   NOINHERIT
20   NOLOGIN
21   NOREPLICATION
22   CONNECTION LIMIT 1;
23
24 CREATE SCHEMA s1;
25 CREATE SCHEMA s2;
26
27 CREATE TABLE s1.t1 (c1 int, c2 int, c3 int, c4 text, PRIMARY KEY (c1));
28 CREATE TABLE s1.t2 (LIKE s1.t1 INCLUDING ALL);
29 CREATE TABLE s1.t3 (LIKE s1.t1 INCLUDING ALL);
30 CREATE TABLE s1.t4 (LIKE s1.t1 INCLUDING ALL);
31 CREATE TABLE s2.t1 (LIKE s1.t1 INCLUDING ALL);
32 CREATE TABLE s1.p1 (LIKE s1.t1 INCLUDING ALL);
33 CREATE UNIQUE INDEX p1_parent ON s1.p1 USING btree (c4 COLLATE "ja_JP" varchar_ops ASC NULLS LAST, (c1 * 2 < 100)) WHERE c1 < 10;
34 CREATE TABLE s1.p2 (LIKE s1.t1 INCLUDING ALL);
35 CREATE TABLE s1.p1c1 (LIKE s1.p1 INCLUDING ALL, CHECK (c1 <= 100)) INHERITS(s1.p1);
36 CREATE TABLE s1.p1c2 (LIKE s1.p1 INCLUDING ALL, CHECK (c1 > 100 AND c1 <= 200)) INHERITS(s1.p1);
37 CREATE TABLE s1.p1c3 (LIKE s1.p1 INCLUDING ALL, CHECK (c1 > 200)) INHERITS(s1.p1);
38 CREATE TABLE s1.p2c1 (LIKE s1.p2 INCLUDING ALL, CHECK (c1 <= 100)) INHERITS(s1.p2);
39 CREATE TABLE s1.p2c2 (LIKE s1.p2 INCLUDING ALL, CHECK (c1 > 100 AND c1 <= 200)) INHERITS(s1.p2);
40 CREATE TABLE s1.p2c3 (LIKE s1.p2 INCLUDING ALL, CHECK (c1 > 200)) INHERITS(s1.p2);
41 CREATE TABLE s1.p2c1c1 (LIKE s1.p2c1 INCLUDING ALL, CHECK (c1 <= 50)) INHERITS(s1.p2c1);
42 CREATE TABLE s1.p2c1c2 (LIKE s1.p2c1 INCLUDING ALL, CHECK (c1 > 50 AND c1 <= 100)) INHERITS(s1.p2c1);
43 CREATE TABLE s1.p2c2c1 (LIKE s1.p2c2 INCLUDING ALL, CHECK (c1 > 100 AND c1 <= 150)) INHERITS(s1.p2c2);
44 CREATE TABLE s1.p2c2c2 (LIKE s1.p2c2 INCLUDING ALL, CHECK (c1 > 150 AND c1 <= 200)) INHERITS(s1.p2c2);
45 CREATE TABLE s1.p2c3c1 (LIKE s1.p2c3 INCLUDING ALL, CHECK (c1 > 200 AND c1 <= 250)) INHERITS(s1.p2c3);
46 CREATE TABLE s1.p2c3c2 (LIKE s1.p2c3 INCLUDING ALL, CHECK (c1 > 250)) INHERITS(s1.p2c3);
47
48 CREATE TABLE s1.r1 (LIKE s1.t1);
49 CREATE TABLE s1.r2 (LIKE s1.t1);
50 CREATE TABLE s1.r3 (LIKE s1.t1);
51 CREATE TABLE s1.r4 (LIKE s1.t1);
52 CREATE TABLE s1.r5 (LIKE s1.t1);
53 CREATE TABLE s1.r1_ (LIKE s1.t1);
54 CREATE TABLE s1.r2_ (LIKE s1.t1);
55 CREATE TABLE s1.r3_ (LIKE s1.t1);
56 CREATE TABLE s1.ti1 (c1 int, c2 int, c3 int, c4 text, PRIMARY KEY (c1), UNIQUE (c2));
57 CREATE TABLE s1.pt1 (c1 int, c2 int, c3 int, c4 int) PARTITION BY RANGE (c1);
58 CREATE TABLE s1.pt1_c1 PARTITION OF s1.pt1 FOR VALUES FROM (MINVALUE) TO (101);
59 CREATE TABLE s1.pt1_c2 PARTITION OF s1.pt1 FOR VALUES FROM (101) TO (201);
60 CREATE TABLE s1.pt1_c3 PARTITION OF s1.pt1 FOR VALUES FROM (201) TO (MAXVALUE);
61 CREATE UNLOGGED TABLE s1.ul1 (LIKE s1.t1 INCLUDING ALL);
62
63 INSERT INTO s1.t1 SELECT i, i, i % 100, i FROM (SELECT generate_series(1, 1000) i) t;
64 INSERT INTO s1.t2 SELECT i, i, i % 10, i FROM (SELECT generate_series(1, 100) i) t;
65 INSERT INTO s2.t1 SELECT i, i, i % 10, i FROM (SELECT generate_series(1, 100) i) t;
66 INSERT INTO s1.p1c1 SELECT i, i, i % 10, i FROM (SELECT generate_series(1, 100) i) t;
67 INSERT INTO s1.p1c2 SELECT i, i, i % 10, i FROM (SELECT generate_series(101, 200) i) t;
68 INSERT INTO s1.p1c3 SELECT i, i, i % 10, i FROM (SELECT generate_series(201, 300) i) t;
69 INSERT INTO s1.p2c1c1 SELECT i, i, i % 10, i FROM (SELECT generate_series(1, 50) i) t;
70 INSERT INTO s1.p2c1c2 SELECT i, i, i % 10, i FROM (SELECT generate_series(51, 100) i) t;
71 INSERT INTO s1.p2c2c1 SELECT i, i, i % 10, i FROM (SELECT generate_series(101, 150) i) t;
72 INSERT INTO s1.p2c2c2 SELECT i, i, i % 10, i FROM (SELECT generate_series(151, 200) i) t;
73 INSERT INTO s1.p2c3c1 SELECT i, i, i % 10, i FROM (SELECT generate_series(201, 250) i) t;
74 INSERT INTO s1.p2c3c2 SELECT i, i, i % 10, i FROM (SELECT generate_series(251, 300) i) t;
75 INSERT INTO s1.ti1 SELECT i, i, i % 100, i FROM (SELECT generate_series(1, 1000) i) t;
76 INSERT INTO s1.pt1 SELECT i, i, i % 10, i FROM (SELECT generate_series(0, 300) i) t;
77
78 CREATE INDEX t1_i ON s1.t1 (c3);
79 CREATE INDEX t1_i1 ON s1.t1 (c1);
80 CREATE INDEX t2_i1 ON s1.t2 (c1);
81 CREATE INDEX t3_i1 ON s1.t3 (c1);
82 CREATE INDEX t4_i1 ON s1.t4 (c1);
83 CREATE INDEX p1_i ON s1.p1 (c1);
84 CREATE INDEX p2_i ON s1.p2 (c1);
85 CREATE INDEX p1_i2 ON s1.p1 (c2);
86 CREATE INDEX p1c1_i ON s1.p1c1 (c1);
87 CREATE INDEX p1c2_i ON s1.p1c2 (c1);
88 CREATE INDEX p1c3_i ON s1.p1c3 (c1);
89 CREATE INDEX p2c1_i ON s1.p2c1 (c1);
90 CREATE INDEX p2c2_i ON s1.p2c2 (c1);
91 CREATE INDEX p2c3_i ON s1.p2c3 (c1);
92 CREATE INDEX p2c1c1_i ON s1.p2c1c1 (c1);
93 CREATE INDEX p2c1c2_i ON s1.p2c1c2 (c1);
94 CREATE INDEX p2c2c1_i ON s1.p2c2c1 (c1);
95 CREATE INDEX p2c2c2_i ON s1.p2c2c2 (c1);
96 CREATE INDEX p2c3c1_i ON s1.p2c3c1 (c1);
97 CREATE INDEX p2c3c2_i ON s1.p2c3c2 (c1);
98 CREATE INDEX ti1_i1    ON s1.ti1 (c2);
99 CREATE INDEX ti1_i2    ON s1.ti1 (c2, c4);
100 CREATE INDEX ti1_i3    ON s1.ti1 (c2, c4, c4);
101 CREATE INDEX ti1_i4    ON s1.ti1 (c2, c4, c4, c4);
102 CREATE INDEX ti1_btree ON s1.ti1 USING btree (c1);
103 CREATE INDEX ti1_hash  ON s1.ti1 USING hash (c1);
104 CREATE INDEX ti1_gist  ON s1.ti1 USING gist (c1);
105 CREATE INDEX ti1_gin   ON s1.ti1 USING gin (c1);
106 CREATE INDEX ti1_expr  ON s1.ti1 ((c1 < 100));
107 CREATE INDEX ti1_pred  ON s1.ti1 (lower(c4));
108 CREATE UNIQUE INDEX ti1_uniq ON s1.ti1 (c1);
109 CREATE INDEX ti1_multi ON s1.ti1 (c1, c2, c3, c4);
110 CREATE INDEX ti1_ts    ON s1.ti1 USING gin(to_tsvector('english', c4));
111 CREATE INDEX pt1_c1_c2_i ON s1.pt1_c1(c2);
112 CREATE INDEX pt1_c1_c3_i ON s1.pt1_c1(c3);
113 CREATE INDEX pt1_c2_c2_i ON s1.pt1_c2(c2);
114 CREATE INDEX pt1_c2_c3_i ON s1.pt1_c2(c3);
115 CREATE INDEX pt1_c3_c2_i ON s1.pt1_c3(c2);
116 CREATE INDEX pt1_c3_c3_i ON s1.pt1_c3(c3);
117
118 CREATE VIEW s1.v1 AS SELECT v1t1.c1, v1t1.c2, v1t1.c3, v1t1.c4 FROM s1.t1 v1t1;
119 CREATE VIEW s1.v1_ AS SELECT v1t1_.c1, v1t1_.c2, v1t1_.c3, v1t1_.c4 FROM s1.t1 v1t1_;
120 CREATE VIEW s1.v2 AS SELECT v2t1.c1, v2t1.c2, v2t1.c3, v2t1.c4 FROM s1.t1 v2t1 JOIN s1.t2 v2t2 ON(v2t1.c1 = v2t2.c1);
121 CREATE VIEW s1.v3 AS SELECT v3t1.c1, v3t1.c2, v3t1.c3, v3t1.c4 FROM s1.t1 v3t1 JOIN s1.t2 v3t2 ON(v3t1.c1 = v3t2.c1) JOIN s1.t3 v3t3 ON(v3t1.c1 = v3t3.c1);
122
123 ANALYZE s1.t1;
124 ANALYZE s1.t2;
125 ANALYZE s2.t1;
126 ANALYZE s1.p1;
127 ANALYZE s1.p2;
128 ANALYZE s1.p1c1;
129 ANALYZE s1.p1c2;
130 ANALYZE s1.p1c3;
131 ANALYZE s1.p2c1c1;
132 ANALYZE s1.p2c1c2;
133 ANALYZE s1.p2c2c1;
134 ANALYZE s1.p2c2c2;
135 ANALYZE s1.p2c3c1;
136 ANALYZE s1.p2c3c2;
137 ANALYZE s1.ti1;
138 ANALYZE s1.pt1;
139
140 CREATE FUNCTION s1.f1 () RETURNS s1.t1 AS $$
141 VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')
142 $$ LANGUAGE sql;
143
144 CREATE RULE r1 AS ON UPDATE TO s1.r1 DO INSTEAD (
145 SELECT max(t1.c1) FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
146 );
147 CREATE RULE r2 AS ON UPDATE TO s1.r2 DO INSTEAD (
148 SELECT max(t1.c1) FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
149 SELECT max(t1.c1) FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
150 );
151 CREATE RULE r3 AS ON UPDATE TO s1.r3 DO INSTEAD (
152 SELECT max(t1.c1) FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
153 SELECT max(t1.c1) FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
154 SELECT max(t1.c1) FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
155 );
156 CREATE RULE r1_ AS ON UPDATE TO s1.r1_ DO INSTEAD (
157 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)';
158 );
159 CREATE RULE r2_ AS ON UPDATE TO s1.r2_ DO INSTEAD (
160 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)';
161 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)' AND b2t1.c1 = b2t3.c1 AND b2t3.ctid = '(1,1)' AND b2t1.c1 = b2t4.c1 AND b2t4.ctid = '(1,1)';
162 );
163 CREATE RULE r3_ AS ON UPDATE TO s1.r3_ DO INSTEAD (
164 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)';
165 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)' AND b2t1.c1 = b2t3.c1 AND b2t3.ctid = '(1,1)' AND b2t1.c1 = b2t4.c1 AND b2t4.ctid = '(1,1)';
166 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)' AND b3t1.c1 = b3t3.c1 AND b3t3.ctid = '(1,1)' AND b3t1.c1 = b3t4.c1 AND b3t4.ctid = '(1,1)';
167 );
168 CREATE RULE "_RETURN" AS ON SELECT TO s1.r4 DO INSTEAD SELECT r4t1.c1, r4t1.c2, r4t1.c3, r4t1.c4 FROM s1.t1 r4t1;
169 CREATE RULE "_RETURN" AS ON SELECT TO s1.r5 DO INSTEAD SELECT r5t1.c1, r5t1.c2, r5t1.c3, r5t1.c4 FROM s1.t1 r5t1;