@@ -124,6 +124,9 @@ DROP TABLE vactst;
124124DROP TABLE vacparted;
125125-- relation ownership, WARNING logs generated as all are skipped.
126126CREATE 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);
127130CREATE ROLE regress_vacuum;
128131SET ROLE regress_vacuum;
129132-- Simple table
@@ -147,6 +150,102 @@ ANALYZE pg_catalog.pg_authid;
147150WARNING: skipping "pg_authid" --- only superuser can analyze it
148151VACUUM (ANALYZE) pg_catalog.pg_authid;
149152WARNING: 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
150248RESET ROLE;
151249DROP TABLE vacowned;
250+ DROP TABLE vacowned_parted;
152251DROP ROLE regress_vacuum;
0 commit comments