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

Commit870d953

Browse files
committed
Use tuple buffer in show_partition_list
1 parent536ef57 commit870d953

File tree

3 files changed

+275
-104
lines changed

3 files changed

+275
-104
lines changed

‎expected/pathman_callbacks.out

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,89 @@ INSERT INTO callbacks.abc VALUES (301, 0); /* +1 new partition */
198198
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_5", "range_max": "401", "range_min": "301", "parent_schema": "callbacks", "partition_schema": "callbacks"}
199199
DROP TABLE callbacks.abc CASCADE;
200200
NOTICE: drop cascades to 4 other objects
201+
/* more complex test using rotation of tables */
202+
CREATE TABLE callbacks.abc(a INT4 NOT NULL);
203+
INSERT INTO callbacks.abc
204+
SELECT a FROM generate_series(1, 100) a;
205+
SELECT create_range_partitions('callbacks.abc', 'a', 1, 10, 10);
206+
create_range_partitions
207+
-------------------------
208+
10
209+
(1 row)
210+
211+
CREATE OR REPLACE FUNCTION callbacks.rotation_callback(params jsonb)
212+
RETURNS VOID AS
213+
$$
214+
DECLARE
215+
relationregclass;
216+
parent_relregclass;
217+
BEGIN
218+
parent_rel := concat(params->>'partition_schema', '.', params->>'parent')::regclass;
219+
220+
-- drop "old" partitions
221+
FOR relation IN (SELECT partition FROM pathman_partition_list
222+
WHERE parent = parent_rel
223+
ORDER BY range_min::INT4 DESC
224+
OFFSET 4) -- remain 4 last partitions
225+
LOOP
226+
RAISE NOTICE 'dropping partition %', relation;
227+
PERFORM drop_range_partition(relation);
228+
END LOOP;
229+
END
230+
$$ LANGUAGE plpgsql;
231+
SELECT * FROM pathman_partition_list
232+
WHERE parent = 'callbacks.abc'::REGCLASS
233+
ORDER BY range_min::INT4;
234+
parent | partition | parttype | partattr | range_min | range_max
235+
---------------+------------------+----------+----------+-----------+-----------
236+
callbacks.abc | callbacks.abc_1 | 2 | a | 1 | 11
237+
callbacks.abc | callbacks.abc_2 | 2 | a | 11 | 21
238+
callbacks.abc | callbacks.abc_3 | 2 | a | 21 | 31
239+
callbacks.abc | callbacks.abc_4 | 2 | a | 31 | 41
240+
callbacks.abc | callbacks.abc_5 | 2 | a | 41 | 51
241+
callbacks.abc | callbacks.abc_6 | 2 | a | 51 | 61
242+
callbacks.abc | callbacks.abc_7 | 2 | a | 61 | 71
243+
callbacks.abc | callbacks.abc_8 | 2 | a | 71 | 81
244+
callbacks.abc | callbacks.abc_9 | 2 | a | 81 | 91
245+
callbacks.abc | callbacks.abc_10 | 2 | a | 91 | 101
246+
(10 rows)
247+
248+
SELECT set_init_callback('callbacks.abc',
249+
'callbacks.rotation_callback(jsonb)');
250+
set_init_callback
251+
-------------------
252+
253+
(1 row)
254+
255+
INSERT INTO callbacks.abc VALUES (110);
256+
NOTICE: dropping partition callbacks.abc_7
257+
NOTICE: dropping partition callbacks.abc_6
258+
NOTICE: dropping partition callbacks.abc_5
259+
NOTICE: dropping partition callbacks.abc_4
260+
NOTICE: dropping partition callbacks.abc_3
261+
NOTICE: dropping partition callbacks.abc_2
262+
NOTICE: dropping partition callbacks.abc_1
263+
INSERT INTO callbacks.abc VALUES (120);
264+
INSERT INTO callbacks.abc VALUES (130);
265+
NOTICE: dropping partition callbacks.abc_8
266+
INSERT INTO callbacks.abc VALUES (140);
267+
NOTICE: dropping partition callbacks.abc_9
268+
INSERT INTO callbacks.abc VALUES (150);
269+
NOTICE: dropping partition callbacks.abc_10
270+
SELECT * FROM pathman_partition_list
271+
WHERE parent = 'callbacks.abc'::REGCLASS
272+
ORDER BY range_min::INT4;
273+
parent | partition | parttype | partattr | range_min | range_max
274+
---------------+------------------+----------+----------+-----------+-----------
275+
callbacks.abc | callbacks.abc_11 | 2 | a | 101 | 111
276+
callbacks.abc | callbacks.abc_12 | 2 | a | 111 | 121
277+
callbacks.abc | callbacks.abc_13 | 2 | a | 121 | 131
278+
callbacks.abc | callbacks.abc_14 | 2 | a | 131 | 141
279+
callbacks.abc | callbacks.abc_15 | 2 | a | 141 | 151
280+
(5 rows)
281+
282+
DROP TABLE callbacks.abc CASCADE;
283+
NOTICE: drop cascades to 5 other objects
201284
DROP SCHEMA callbacks CASCADE;
202-
NOTICE: drop cascades to2 other objects
285+
NOTICE: drop cascades to3 other objects
203286
DROP EXTENSION pg_pathman CASCADE;

‎sql/pathman_callbacks.sql

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,50 @@ INSERT INTO callbacks.abc VALUES (301, 0); /* +1 new partition */
9797

9898
DROPTABLEcallbacks.abc CASCADE;
9999

100+
/* more complex test using rotation of tables*/
101+
CREATETABLEcallbacks.abc(a INT4NOT NULL);
102+
INSERT INTOcallbacks.abc
103+
SELECT aFROM generate_series(1,100) a;
104+
SELECT create_range_partitions('callbacks.abc','a',1,10,10);
105+
106+
CREATE OR REPLACEFUNCTIONcallbacks.rotation_callback(params jsonb)
107+
RETURNS VOIDAS
108+
$$
109+
DECLARE
110+
relationregclass;
111+
parent_relregclass;
112+
BEGIN
113+
parent_rel := concat(params->>'partition_schema','.', params->>'parent')::regclass;
114+
115+
-- drop "old" partitions
116+
FOR relationIN (SELECT partitionFROM pathman_partition_list
117+
WHERE parent= parent_rel
118+
ORDER BY range_min::INT4DESC
119+
OFFSET4)-- remain 4 last partitions
120+
LOOP
121+
RAISE NOTICE'dropping partition %', relation;
122+
PERFORM drop_range_partition(relation);
123+
END LOOP;
124+
END
125+
$$ LANGUAGE plpgsql;
126+
127+
SELECT*FROM pathman_partition_list
128+
WHERE parent='callbacks.abc'::REGCLASS
129+
ORDER BY range_min::INT4;
130+
131+
SELECT set_init_callback('callbacks.abc',
132+
'callbacks.rotation_callback(jsonb)');
133+
134+
INSERT INTOcallbacks.abcVALUES (110);
135+
INSERT INTOcallbacks.abcVALUES (120);
136+
INSERT INTOcallbacks.abcVALUES (130);
137+
INSERT INTOcallbacks.abcVALUES (140);
138+
INSERT INTOcallbacks.abcVALUES (150);
100139

140+
SELECT*FROM pathman_partition_list
141+
WHERE parent='callbacks.abc'::REGCLASS
142+
ORDER BY range_min::INT4;
143+
144+
DROPTABLEcallbacks.abc CASCADE;
101145
DROPSCHEMA callbacks CASCADE;
102146
DROP EXTENSION pg_pathman CASCADE;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp