@@ -77,7 +77,7 @@ SELECT prepend_range_partition('permissions.user1_table');
77
77
permissions.user1_table_4
78
78
(1 row)
79
79
80
- SELECT attname, attacl from pg_attribute
80
+ SELECT attname, attacl FROM pg_attribute
81
81
WHERE attrelid = (SELECT "partition" FROM pathman_partition_list
82
82
WHERE parent = 'permissions.user1_table'::REGCLASS
83
83
ORDER BY range_min::int ASC /* prepend */
@@ -166,6 +166,73 @@ NOTICE: 10 rows copied from permissions.user2_table_2
166
166
3
167
167
(1 row)
168
168
169
+ /* Switch to #1 */
170
+ SET ROLE user1;
171
+ CREATE TABLE permissions.dropped_column(a int, val int not null, b int, c int);
172
+ INSERT INTO permissions.dropped_column SELECT i,i,i,i FROM generate_series(1, 30) i;
173
+ GRANT SELECT(val), INSERT(val) ON permissions.dropped_column TO user2;
174
+ SELECT create_range_partitions('permissions.dropped_column', 'val', 1, 10);
175
+ NOTICE: sequence "dropped_column_seq" does not exist, skipping
176
+ create_range_partitions
177
+ -------------------------
178
+ 3
179
+ (1 row)
180
+
181
+ SELECT attrelid::regclass, attname, attacl FROM pg_attribute
182
+ WHERE attrelid = ANY (SELECT "partition" FROM pathman_partition_list
183
+ WHERE parent = 'permissions.dropped_column'::REGCLASS)
184
+ AND attacl IS NOT NULL
185
+ ORDER BY attrelid::regclass::text; /* check ACL for each column */
186
+ attrelid | attname | attacl
187
+ ------------------------------+---------+------------------
188
+ permissions.dropped_column_1 | val | {user2=ar/user1}
189
+ permissions.dropped_column_2 | val | {user2=ar/user1}
190
+ permissions.dropped_column_3 | val | {user2=ar/user1}
191
+ (3 rows)
192
+
193
+ ALTER TABLE permissions.dropped_column DROP COLUMN a; /* DROP "a" */
194
+ SELECT append_range_partition('permissions.dropped_column');
195
+ append_range_partition
196
+ ------------------------------
197
+ permissions.dropped_column_4
198
+ (1 row)
199
+
200
+ SELECT attrelid::regclass, attname, attacl FROM pg_attribute
201
+ WHERE attrelid = ANY (SELECT "partition" FROM pathman_partition_list
202
+ WHERE parent = 'permissions.dropped_column'::REGCLASS)
203
+ AND attacl IS NOT NULL
204
+ ORDER BY attrelid::regclass::text; /* check ACL for each column (+1 partition) */
205
+ attrelid | attname | attacl
206
+ ------------------------------+---------+------------------
207
+ permissions.dropped_column_1 | val | {user2=ar/user1}
208
+ permissions.dropped_column_2 | val | {user2=ar/user1}
209
+ permissions.dropped_column_3 | val | {user2=ar/user1}
210
+ permissions.dropped_column_4 | val | {user2=ar/user1}
211
+ (4 rows)
212
+
213
+ ALTER TABLE permissions.dropped_column DROP COLUMN b; /* DROP "b" */
214
+ SELECT append_range_partition('permissions.dropped_column');
215
+ append_range_partition
216
+ ------------------------------
217
+ permissions.dropped_column_5
218
+ (1 row)
219
+
220
+ SELECT attrelid::regclass, attname, attacl FROM pg_attribute
221
+ WHERE attrelid = ANY (SELECT "partition" FROM pathman_partition_list
222
+ WHERE parent = 'permissions.dropped_column'::REGCLASS)
223
+ AND attacl IS NOT NULL
224
+ ORDER BY attrelid::regclass::text; /* check ACL for each column (+1 partition) */
225
+ attrelid | attname | attacl
226
+ ------------------------------+---------+------------------
227
+ permissions.dropped_column_1 | val | {user2=ar/user1}
228
+ permissions.dropped_column_2 | val | {user2=ar/user1}
229
+ permissions.dropped_column_3 | val | {user2=ar/user1}
230
+ permissions.dropped_column_4 | val | {user2=ar/user1}
231
+ permissions.dropped_column_5 | val | {user2=ar/user1}
232
+ (5 rows)
233
+
234
+ DROP TABLE permissions.dropped_column CASCADE;
235
+ NOTICE: drop cascades to 5 other objects
169
236
/* Finally reset user */
170
237
RESET ROLE;
171
238
DROP OWNED BY user1;
0 commit comments