Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite133699

Browse files
committed
add 'pathman_bgw' regression test
1 parent5de8506 commite133699

File tree

7 files changed

+182
-9
lines changed

7 files changed

+182
-9
lines changed

‎Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ PGFILEDESC = "pg_pathman - partitioning tool"
2222

2323
REGRESS = pathman_basic\
2424
pathman_cte\
25+
pathman_bgw\
26+
pathman_inserts\
2527
pathman_domains\
2628
pathman_interval\
2729
pathman_callbacks\
2830
pathman_foreign_keys\
2931
pathman_permissions\
3032
pathman_rowmarks\
31-
pathman_inserts\
3233
pathman_runtime_nodes\
3334
pathman_utility_stmt_hooking\
3435
pathman_calamity

‎expected/pathman_bgw.out

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
\set VERBOSITY terse
2+
SET search_path = 'public';
3+
CREATE EXTENSION pg_pathman;
4+
CREATE SCHEMA test_bgw;
5+
/*
6+
* Tests for SpawnPartitionsWorker
7+
*/
8+
/* int4, size of Datum == 4 */
9+
CREATE TABLE test_bgw.test_1(val INT4 NOT NULL);
10+
SELECT create_range_partitions('test_bgw.test_1', 'val', 1, 5, 2);
11+
NOTICE: sequence "test_1_seq" does not exist, skipping
12+
create_range_partitions
13+
-------------------------
14+
2
15+
(1 row)
16+
17+
SELECT set_spawn_using_bgw('test_bgw.test_1', true);
18+
set_spawn_using_bgw
19+
---------------------
20+
21+
(1 row)
22+
23+
INSERT INTO test_bgw.test_1 VALUES (11);
24+
SELECT * FROM pathman_partition_list ORDER BY partition; /* should contain 3 partitions */
25+
parent | partition | parttype | partattr | range_min | range_max
26+
-----------------+-------------------+----------+----------+-----------+-----------
27+
test_bgw.test_1 | test_bgw.test_1_1 | 2 | val | 1 | 6
28+
test_bgw.test_1 | test_bgw.test_1_2 | 2 | val | 6 | 11
29+
test_bgw.test_1 | test_bgw.test_1_3 | 2 | val | 11 | 16
30+
(3 rows)
31+
32+
DROP TABLE test_bgw.test_1 CASCADE;
33+
NOTICE: drop cascades to 3 other objects
34+
/* int8, size of Datum == 8 */
35+
CREATE TABLE test_bgw.test_2(val INT8 NOT NULL);
36+
SELECT create_range_partitions('test_bgw.test_2', 'val', 1, 5, 2);
37+
NOTICE: sequence "test_2_seq" does not exist, skipping
38+
create_range_partitions
39+
-------------------------
40+
2
41+
(1 row)
42+
43+
SELECT set_spawn_using_bgw('test_bgw.test_2', true);
44+
set_spawn_using_bgw
45+
---------------------
46+
47+
(1 row)
48+
49+
INSERT INTO test_bgw.test_2 VALUES (11);
50+
SELECT * FROM pathman_partition_list ORDER BY partition; /* should contain 3 partitions */
51+
parent | partition | parttype | partattr | range_min | range_max
52+
-----------------+-------------------+----------+----------+-----------+-----------
53+
test_bgw.test_2 | test_bgw.test_2_1 | 2 | val | 1 | 6
54+
test_bgw.test_2 | test_bgw.test_2_2 | 2 | val | 6 | 11
55+
test_bgw.test_2 | test_bgw.test_2_3 | 2 | val | 11 | 16
56+
(3 rows)
57+
58+
DROP TABLE test_bgw.test_2 CASCADE;
59+
NOTICE: drop cascades to 3 other objects
60+
/* numeric, size of Datum == var */
61+
CREATE TABLE test_bgw.test_3(val NUMERIC NOT NULL);
62+
SELECT create_range_partitions('test_bgw.test_3', 'val', 1, 5, 2);
63+
NOTICE: sequence "test_3_seq" does not exist, skipping
64+
create_range_partitions
65+
-------------------------
66+
2
67+
(1 row)
68+
69+
SELECT set_spawn_using_bgw('test_bgw.test_3', true);
70+
set_spawn_using_bgw
71+
---------------------
72+
73+
(1 row)
74+
75+
INSERT INTO test_bgw.test_3 VALUES (11);
76+
SELECT * FROM pathman_partition_list ORDER BY partition; /* should contain 3 partitions */
77+
parent | partition | parttype | partattr | range_min | range_max
78+
-----------------+-------------------+----------+----------+-----------+-----------
79+
test_bgw.test_3 | test_bgw.test_3_1 | 2 | val | 1 | 6
80+
test_bgw.test_3 | test_bgw.test_3_2 | 2 | val | 6 | 11
81+
test_bgw.test_3 | test_bgw.test_3_3 | 2 | val | 11 | 16
82+
(3 rows)
83+
84+
DROP TABLE test_bgw.test_3 CASCADE;
85+
NOTICE: drop cascades to 3 other objects
86+
/* date, size of Datum == var */
87+
CREATE TABLE test_bgw.test_4(val DATE NOT NULL);
88+
SELECT create_range_partitions('test_bgw.test_4', 'val', '20170213'::date, '1 day'::interval, 2);
89+
NOTICE: sequence "test_4_seq" does not exist, skipping
90+
create_range_partitions
91+
-------------------------
92+
2
93+
(1 row)
94+
95+
SELECT set_spawn_using_bgw('test_bgw.test_4', true);
96+
set_spawn_using_bgw
97+
---------------------
98+
99+
(1 row)
100+
101+
INSERT INTO test_bgw.test_4 VALUES ('20170215');
102+
SELECT * FROM pathman_partition_list ORDER BY partition; /* should contain 3 partitions */
103+
parent | partition | parttype | partattr | range_min | range_max
104+
-----------------+-------------------+----------+----------+------------+------------
105+
test_bgw.test_4 | test_bgw.test_4_1 | 2 | val | 02-13-2017 | 02-14-2017
106+
test_bgw.test_4 | test_bgw.test_4_2 | 2 | val | 02-14-2017 | 02-15-2017
107+
test_bgw.test_4 | test_bgw.test_4_3 | 2 | val | 02-15-2017 | 02-16-2017
108+
(3 rows)
109+
110+
DROP TABLE test_bgw.test_4 CASCADE;
111+
NOTICE: drop cascades to 3 other objects
112+
DROP SCHEMA test_bgw CASCADE;
113+
NOTICE: drop cascades to 4 other objects
114+
DROP EXTENSION pg_pathman;

‎expected/pathman_callbacks.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,18 +184,18 @@ WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_2",
184184
2
185185
(1 row)
186186

187-
INSERT INTO callbacks.abc VALUES (201, 0);
187+
INSERT INTO callbacks.abc VALUES (201, 0); /* +1 new partition */
188188
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_3", "range_max": "301", "range_min": "201", "parent_schema": "callbacks", "partition_schema": "callbacks"}
189189
DROP FUNCTION callbacks.abc_on_part_created_callback(jsonb);
190-
INSERT INTO callbacks.abc VALUES (301, 0);
190+
INSERT INTO callbacks.abc VALUES (301, 0); /* +0 new partitions (ERROR) */
191191
ERROR: callback function "callbacks.abc_on_part_created_callback(jsonb)" does not exist
192192
CREATE OR REPLACE FUNCTION callbacks.abc_on_part_created_callback(args JSONB)
193193
RETURNS VOID AS $$
194194
BEGIN
195195
RAISE WARNING 'callback arg: %', args::TEXT;
196196
END
197197
$$ language plpgsql;
198-
INSERT INTO callbacks.abc VALUES (301, 0);
198+
INSERT INTO callbacks.abc VALUES (301, 0); /* +1 new partition */
199199
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_5", "range_max": "401", "range_min": "301", "parent_schema": "callbacks", "partition_schema": "callbacks"}
200200
DROP TABLE callbacks.abc CASCADE;
201201
NOTICE: drop cascades to 4 other objects

‎expected/pathman_inserts.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ CREATE TRIGGER print_new_row_before_insert BEFORE INSERT ON test_inserts.storage
3131
FOR EACH ROW EXECUTE PROCEDURE test_inserts.print_cols_before_change();
3232
CREATE TRIGGER print_new_row_after_insert AFTER INSERT ON test_inserts.storage_1
3333
FOR EACH ROW EXECUTE PROCEDURE test_inserts.print_cols_after_change();
34-
/* set partition init callback */
34+
/* set partition init callbackthat will add triggers to partitions*/
3535
CREATE OR REPLACE FUNCTION test_inserts.set_triggers(args jsonb) RETURNS VOID AS $$
3636
BEGIN
3737
EXECUTE format('create trigger print_new_row_before_insert before insert on %s.%s

‎sql/pathman_bgw.sql

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
\set VERBOSITY terse
2+
3+
SET search_path='public';
4+
CREATE EXTENSION pg_pathman;
5+
CREATESCHEMAtest_bgw;
6+
7+
8+
/*
9+
* Tests for SpawnPartitionsWorker
10+
*/
11+
12+
/* int4, size of Datum == 4*/
13+
CREATETABLEtest_bgw.test_1(val INT4NOT NULL);
14+
SELECT create_range_partitions('test_bgw.test_1','val',1,5,2);
15+
16+
SELECT set_spawn_using_bgw('test_bgw.test_1', true);
17+
INSERT INTOtest_bgw.test_1VALUES (11);
18+
SELECT*FROM pathman_partition_listORDER BY partition;/* should contain 3 partitions*/
19+
20+
DROPTABLEtest_bgw.test_1 CASCADE;
21+
22+
23+
/* int8, size of Datum == 8*/
24+
CREATETABLEtest_bgw.test_2(val INT8NOT NULL);
25+
SELECT create_range_partitions('test_bgw.test_2','val',1,5,2);
26+
27+
SELECT set_spawn_using_bgw('test_bgw.test_2', true);
28+
INSERT INTOtest_bgw.test_2VALUES (11);
29+
SELECT*FROM pathman_partition_listORDER BY partition;/* should contain 3 partitions*/
30+
31+
DROPTABLEtest_bgw.test_2 CASCADE;
32+
33+
34+
/* numeric, size of Datum == var*/
35+
CREATETABLEtest_bgw.test_3(valNUMERICNOT NULL);
36+
SELECT create_range_partitions('test_bgw.test_3','val',1,5,2);
37+
38+
SELECT set_spawn_using_bgw('test_bgw.test_3', true);
39+
INSERT INTOtest_bgw.test_3VALUES (11);
40+
SELECT*FROM pathman_partition_listORDER BY partition;/* should contain 3 partitions*/
41+
42+
DROPTABLEtest_bgw.test_3 CASCADE;
43+
44+
45+
/* date, size of Datum == var*/
46+
CREATETABLEtest_bgw.test_4(valDATENOT NULL);
47+
SELECT create_range_partitions('test_bgw.test_4','val','20170213'::date,'1 day'::interval,2);
48+
49+
SELECT set_spawn_using_bgw('test_bgw.test_4', true);
50+
INSERT INTOtest_bgw.test_4VALUES ('20170215');
51+
SELECT*FROM pathman_partition_listORDER BY partition;/* should contain 3 partitions*/
52+
53+
DROPTABLEtest_bgw.test_4 CASCADE;
54+
55+
56+
57+
DROPSCHEMA test_bgw CASCADE;
58+
DROP EXTENSION pg_pathman;

‎sql/pathman_callbacks.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,16 @@ SELECT set_init_callback('callbacks.abc',
8484
'callbacks.abc_on_part_created_callback(jsonb)');
8585
SELECT create_range_partitions('callbacks.abc','a',1,100,2);
8686

87-
INSERT INTOcallbacks.abcVALUES (201,0);
87+
INSERT INTOcallbacks.abcVALUES (201,0);/* +1 new partition*/
8888
DROPFUNCTIONcallbacks.abc_on_part_created_callback(jsonb);
89-
INSERT INTOcallbacks.abcVALUES (301,0);
89+
INSERT INTOcallbacks.abcVALUES (301,0);/* +0 new partitions (ERROR)*/
9090
CREATE OR REPLACEFUNCTIONcallbacks.abc_on_part_created_callback(args JSONB)
9191
RETURNS VOIDAS $$
9292
BEGIN
9393
RAISE WARNING'callback arg: %', args::TEXT;
9494
END
9595
$$ language plpgsql;
96-
INSERT INTOcallbacks.abcVALUES (301,0);
96+
INSERT INTOcallbacks.abcVALUES (301,0);/* +1 new partition*/
9797

9898
DROPTABLEcallbacks.abc CASCADE;
9999

‎sql/pathman_inserts.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ CREATE TRIGGER print_new_row_before_insert BEFORE INSERT ON test_inserts.storage
3333
CREATETRIGGERprint_new_row_after_insert AFTER INSERTONtest_inserts.storage_1
3434
FOR EACH ROW EXECUTE PROCEDUREtest_inserts.print_cols_after_change();
3535

36-
/* set partition init callback*/
36+
/* set partition init callbackthat will add triggers to partitions*/
3737
CREATE OR REPLACEFUNCTIONtest_inserts.set_triggers(args jsonb) RETURNS VOIDAS $$
3838
BEGIN
3939
EXECUTE format('create trigger print_new_row_before_insert before insert on %s.%s

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp