11CREATE EXTENSION yezzey VERSION '1.0';
2- ALTER EXTENSION yezzey UPDATE TO '1.8.6';
2+ ALTER EXTENSION yezzey UPDATE TO '1.8.9';
3+ \! rm -fr /tmp/test_spc_vacuum_garbage_tab1 && mkdir -p /tmp/test_spc_vacuum_garbage_tab1
4+ CREATE TABLESPACE vacuum_garbage_tab1 LOCATION '/tmp/test_spc_vacuum_garbage_tab1';
5+ \! rm -fr /tmp/test_spc_vacuum_garbage_tab2 && mkdir -p /tmp/test_spc_vacuum_garbage_tab2
6+ CREATE TABLESPACE vacuum_garbage_tab2 LOCATION '/tmp/test_spc_vacuum_garbage_tab2';
37CREATE TABLE vacuum_garbage_aot(i INT) WITH (appendonly=true) DISTRIBUTED BY (i);
48SELECT yezzey_define_offload_policy('vacuum_garbage_aot');
59 yezzey_define_offload_policy
@@ -14,6 +18,20 @@ SELECT yezzey_define_offload_policy('vacuum_garbage_aot_r');
1418
1519(1 row)
1620
21+ CREATE TABLE vacuum_garbage_ts1(i INT) WITH (appendonly=true) TABLESPACE vacuum_garbage_tab1 DISTRIBUTED BY (i);
22+ SELECT yezzey_define_offload_policy('vacuum_garbage_ts1');
23+ yezzey_define_offload_policy
24+ ------------------------------
25+
26+ (1 row)
27+
28+ CREATE TABLE vacuum_garbage_ts2(i INT) WITH (appendonly=true) TABLESPACE vacuum_garbage_tab2 DISTRIBUTED BY (i);
29+ SELECT yezzey_define_offload_policy('vacuum_garbage_ts2');
30+ yezzey_define_offload_policy
31+ ------------------------------
32+
33+ (1 row)
34+
1735-- check how it work with ONLY given relation
1836INSERT INTO vacuum_garbage_aot_r VALUES(1);
1937DELETE FROM vacuum_garbage_aot_r;
@@ -23,6 +41,14 @@ INSERT INTO vacuum_garbage_aot VALUES(1);
2341DELETE FROM vacuum_garbage_aot;
2442INSERT INTO vacuum_garbage_aot VALUES(1);
2543VACUUM vacuum_garbage_aot;
44+ INSERT INTO vacuum_garbage_ts1 VALUES(1);
45+ DELETE FROM vacuum_garbage_ts1;
46+ INSERT INTO vacuum_garbage_ts1 VALUES(1);
47+ VACUUM vacuum_garbage_ts1;
48+ INSERT INTO vacuum_garbage_ts2 VALUES(1);
49+ DELETE FROM vacuum_garbage_ts2;
50+ INSERT INTO vacuum_garbage_ts2 VALUES(1);
51+ VACUUM vacuum_garbage_ts2;
2652-- should be three files, old and new, and after vacuum
2753SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_aot_r');
2854 count
@@ -37,6 +63,19 @@ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum
3763 3
3864(1 row)
3965
66+ -- should be three files, old and new, and after vacuum in custom tablespaces
67+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts1');
68+ count
69+ -------
70+ 3
71+ (1 row)
72+
73+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts2');
74+ count
75+ -------
76+ 3
77+ (1 row)
78+
4079SELECT yezzey_vacuum_garbage_relation('vacuum_garbage_aot_r', true, true);
4180 yezzey_vacuum_garbage_relation
4281--------------------------------
@@ -57,9 +96,50 @@ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum
5796 3
5897(1 row)
5998
99+ -- should not change custom tablespace relations before tablespace vacuum
100+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts1');
101+ count
102+ -------
103+ 3
104+ (1 row)
105+
106+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts2');
107+ count
108+ -------
109+ 3
110+ (1 row)
111+
112+ -- should vacuum garbage only in requested tablespace
113+ SELECT yezzey_vacuum_garbage_tablespace((SELECT oid FROM pg_tablespace WHERE spcname = 'vacuum_garbage_tab1'), true, true);
114+ yezzey_vacuum_garbage_tablespace
115+ ----------------------------------
116+
117+
118+
119+ (3 rows)
120+
121+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts1');
122+ count
123+ -------
124+ 1
125+ (1 row)
126+
127+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts2');
128+ count
129+ -------
130+ 3
131+ (1 row)
132+
133+ -- default tablespace relation should not change after custom tablespace vacuum
134+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_aot');
135+ count
136+ -------
137+ 3
138+ (1 row)
139+
60140-- should be one file in each relation
61141SELECT yezzey_vacuum_garbage(true, true);
62- yezzey_vacuum_garbage
142+ yezzey_vacuum_garbage
63143-----------------------
64144
65145
@@ -78,11 +158,25 @@ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum
78158 1
79159(1 row)
80160
161+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts1');
162+ count
163+ -------
164+ 1
165+ (1 row)
166+
167+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts2');
168+ count
169+ -------
170+ 1
171+ (1 row)
172+
81173DROP TABLE vacuum_garbage_aot;
82174DROP TABLE vacuum_garbage_aot_r;
175+ DROP TABLE vacuum_garbage_ts1;
176+ DROP TABLE vacuum_garbage_ts2;
83177-- should be zero
84178SELECT yezzey_vacuum_garbage(true, true);
85- yezzey_vacuum_garbage
179+ yezzey_vacuum_garbage
86180-----------------------
87181
88182
@@ -101,5 +195,19 @@ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum
101195 0
102196(1 row)
103197
198+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts1');
199+ count
200+ -------
201+ 0
202+ (1 row)
203+
204+ SELECT count(1) FROM yezzey_relation_describe_external_storage_structure('vacuum_garbage_ts2');
205+ count
206+ -------
207+ 0
208+ (1 row)
209+
210+ DROP TABLESPACE vacuum_garbage_tab1;
211+ DROP TABLESPACE vacuum_garbage_tab2;
104212DROP EXTENSION yezzey;
105213CHECKPOINT;
0 commit comments