@@ -124,6 +124,9 @@ DROP TABLE vactst;
124
124
DROP TABLE vacparted;
125
125
-- relation ownership, WARNING logs generated as all are skipped.
126
126
CREATE TABLE vacowned (a int);
127
+ CREATE TABLE vacowned_parted (a int) PARTITION BY LIST (a);
128
+ CREATE TABLE vacowned_part1 PARTITION OF vacowned_parted FOR VALUES IN (1);
129
+ CREATE TABLE vacowned_part2 PARTITION OF vacowned_parted FOR VALUES IN (2);
127
130
CREATE ROLE regress_vacuum;
128
131
SET ROLE regress_vacuum;
129
132
-- Simple table
@@ -147,6 +150,102 @@ ANALYZE pg_catalog.pg_authid;
147
150
WARNING: skipping "pg_authid" --- only superuser can analyze it
148
151
VACUUM (ANALYZE) pg_catalog.pg_authid;
149
152
WARNING: skipping "pg_authid" --- only superuser can vacuum it
153
+ -- Partitioned table and its partitions, nothing owned by other user.
154
+ -- Relations are not listed in a single command to test ownership
155
+ -- independently.
156
+ VACUUM vacowned_parted;
157
+ WARNING: skipping "vacowned_parted" --- only table or database owner can vacuum it
158
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
159
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
160
+ VACUUM vacowned_part1;
161
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
162
+ VACUUM vacowned_part2;
163
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
164
+ ANALYZE vacowned_parted;
165
+ WARNING: skipping "vacowned_parted" --- only table or database owner can analyze it
166
+ WARNING: skipping "vacowned_part1" --- only table or database owner can analyze it
167
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
168
+ ANALYZE vacowned_part1;
169
+ WARNING: skipping "vacowned_part1" --- only table or database owner can analyze it
170
+ ANALYZE vacowned_part2;
171
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
172
+ VACUUM (ANALYZE) vacowned_parted;
173
+ WARNING: skipping "vacowned_parted" --- only table or database owner can vacuum it
174
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
175
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
176
+ VACUUM (ANALYZE) vacowned_part1;
177
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
178
+ VACUUM (ANALYZE) vacowned_part2;
179
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
180
+ RESET ROLE;
181
+ -- Partitioned table and one partition owned by other user.
182
+ ALTER TABLE vacowned_parted OWNER TO regress_vacuum;
183
+ ALTER TABLE vacowned_part1 OWNER TO regress_vacuum;
184
+ SET ROLE regress_vacuum;
185
+ VACUUM vacowned_parted;
186
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
187
+ VACUUM vacowned_part1;
188
+ VACUUM vacowned_part2;
189
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
190
+ ANALYZE vacowned_parted;
191
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
192
+ ANALYZE vacowned_part1;
193
+ ANALYZE vacowned_part2;
194
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
195
+ VACUUM (ANALYZE) vacowned_parted;
196
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
197
+ VACUUM (ANALYZE) vacowned_part1;
198
+ VACUUM (ANALYZE) vacowned_part2;
199
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
200
+ RESET ROLE;
201
+ -- Only one partition owned by other user.
202
+ ALTER TABLE vacowned_parted OWNER TO CURRENT_USER;
203
+ SET ROLE regress_vacuum;
204
+ VACUUM vacowned_parted;
205
+ WARNING: skipping "vacowned_parted" --- only table or database owner can vacuum it
206
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
207
+ VACUUM vacowned_part1;
208
+ VACUUM vacowned_part2;
209
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
210
+ ANALYZE vacowned_parted;
211
+ WARNING: skipping "vacowned_parted" --- only table or database owner can analyze it
212
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
213
+ ANALYZE vacowned_part1;
214
+ ANALYZE vacowned_part2;
215
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
216
+ VACUUM (ANALYZE) vacowned_parted;
217
+ WARNING: skipping "vacowned_parted" --- only table or database owner can vacuum it
218
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
219
+ VACUUM (ANALYZE) vacowned_part1;
220
+ VACUUM (ANALYZE) vacowned_part2;
221
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
222
+ RESET ROLE;
223
+ -- Only partitioned table owned by other user.
224
+ ALTER TABLE vacowned_parted OWNER TO regress_vacuum;
225
+ ALTER TABLE vacowned_part1 OWNER TO CURRENT_USER;
226
+ SET ROLE regress_vacuum;
227
+ VACUUM vacowned_parted;
228
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
229
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
230
+ VACUUM vacowned_part1;
231
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
232
+ VACUUM vacowned_part2;
233
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
234
+ ANALYZE vacowned_parted;
235
+ WARNING: skipping "vacowned_part1" --- only table or database owner can analyze it
236
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
237
+ ANALYZE vacowned_part1;
238
+ WARNING: skipping "vacowned_part1" --- only table or database owner can analyze it
239
+ ANALYZE vacowned_part2;
240
+ WARNING: skipping "vacowned_part2" --- only table or database owner can analyze it
241
+ VACUUM (ANALYZE) vacowned_parted;
242
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
243
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
244
+ VACUUM (ANALYZE) vacowned_part1;
245
+ WARNING: skipping "vacowned_part1" --- only table or database owner can vacuum it
246
+ VACUUM (ANALYZE) vacowned_part2;
247
+ WARNING: skipping "vacowned_part2" --- only table or database owner can vacuum it
150
248
RESET ROLE;
151
249
DROP TABLE vacowned;
250
+ DROP TABLE vacowned_parted;
152
251
DROP ROLE regress_vacuum;
0 commit comments