create table no_access (i int) using columnar; insert into no_access values(1); insert into no_access values(2); insert into no_access values(3); select current_user \gset create user columnar_user; GRANT CREATE ON SCHEMA public TO columnar_user; \c - columnar_user -- owned by columnar_user create table columnar_permissions(i int) using columnar; insert into columnar_permissions values(1); insert into columnar_permissions values(2); alter table columnar_permissions add column j int; alter table columnar_permissions reset (columnar.compression); alter table columnar_permissions set (columnar.compression = none); select alter_columnar_table_reset('columnar_permissions', stripe_row_limit => true); alter_columnar_table_reset --------------------------------------------------------------------- (1 row) select alter_columnar_table_set('columnar_permissions', stripe_row_limit => 2222); alter_columnar_table_set --------------------------------------------------------------------- (1 row) select 1 from columnar.get_storage_id('columnar_permissions'::regclass); ?column? --------------------------------------------------------------------- 1 (1 row) -- error select 1 from columnar.get_storage_id('no_access'::regclass); ERROR: must be owner of table no_access -- only tuples related to columnar_permissions should be visible select relation, chunk_group_row_limit, stripe_row_limit, compression, compression_level from columnar.options where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation; relation | chunk_group_row_limit | stripe_row_limit | compression | compression_level --------------------------------------------------------------------- columnar_permissions | 10000 | 2222 | none | 3 (1 row) select relation, stripe_num, row_count, first_row_number from columnar.stripe where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation, stripe_num; relation | stripe_num | row_count | first_row_number --------------------------------------------------------------------- columnar_permissions | 1 | 1 | 1 columnar_permissions | 2 | 1 | 150001 (2 rows) select relation, stripe_num, attr_num, chunk_group_num, value_count from columnar.chunk where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation, stripe_num; relation | stripe_num | attr_num | chunk_group_num | value_count --------------------------------------------------------------------- columnar_permissions | 1 | 1 | 0 | 1 columnar_permissions | 2 | 1 | 0 | 1 (2 rows) select relation, stripe_num, chunk_group_num, row_count from columnar.chunk_group where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation, stripe_num; relation | stripe_num | chunk_group_num | row_count --------------------------------------------------------------------- columnar_permissions | 1 | 0 | 1 columnar_permissions | 2 | 0 | 1 (2 rows) truncate columnar_permissions; insert into columnar_permissions values(2,20); insert into columnar_permissions values(2,30); insert into columnar_permissions values(4,40); insert into columnar_permissions values(5,50); vacuum columnar_permissions; -- error: columnar_user can't alter no_access alter table no_access reset (columnar.stripe_row_limit); ERROR: must be owner of table no_access alter table no_access set (columnar.stripe_row_limit = 12000); ERROR: must be owner of table no_access select alter_columnar_table_reset('no_access', chunk_group_row_limit => true); ERROR: must be owner of table no_access CONTEXT: SQL statement "ALTER TABLE no_access RESET (columnar.chunk_group_row_limit)" PL/pgSQL function alter_columnar_table_reset(regclass,boolean,boolean,boolean,boolean) line XX at EXECUTE select alter_columnar_table_set('no_access', chunk_group_row_limit => 1111); ERROR: must be owner of table no_access CONTEXT: SQL statement "ALTER TABLE no_access SET (columnar.chunk_group_row_limit=1111)" PL/pgSQL function alter_columnar_table_set(regclass,integer,integer,name,integer) line XX at EXECUTE \c - :current_user -- should see tuples from both columnar_permissions and no_access select relation, chunk_group_row_limit, stripe_row_limit, compression, compression_level from columnar.options where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation; relation | chunk_group_row_limit | stripe_row_limit | compression | compression_level --------------------------------------------------------------------- no_access | 10000 | 150000 | zstd | 3 columnar_permissions | 10000 | 2222 | none | 3 (2 rows) select relation, stripe_num, row_count, first_row_number from columnar.stripe where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation, stripe_num; relation | stripe_num | row_count | first_row_number --------------------------------------------------------------------- no_access | 1 | 1 | 1 no_access | 2 | 1 | 150001 no_access | 3 | 1 | 300001 columnar_permissions | 1 | 1 | 1 columnar_permissions | 2 | 1 | 2223 columnar_permissions | 3 | 1 | 4445 columnar_permissions | 4 | 1 | 6667 (7 rows) select relation, stripe_num, attr_num, chunk_group_num, value_count from columnar.chunk where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation, stripe_num, attr_num; relation | stripe_num | attr_num | chunk_group_num | value_count --------------------------------------------------------------------- no_access | 1 | 1 | 0 | 1 no_access | 2 | 1 | 0 | 1 no_access | 3 | 1 | 0 | 1 columnar_permissions | 1 | 1 | 0 | 1 columnar_permissions | 1 | 2 | 0 | 1 columnar_permissions | 2 | 1 | 0 | 1 columnar_permissions | 2 | 2 | 0 | 1 columnar_permissions | 3 | 1 | 0 | 1 columnar_permissions | 3 | 2 | 0 | 1 columnar_permissions | 4 | 1 | 0 | 1 columnar_permissions | 4 | 2 | 0 | 1 (11 rows) select relation, stripe_num, chunk_group_num, row_count from columnar.chunk_group where relation in ('no_access'::regclass, 'columnar_permissions'::regclass) order by relation, stripe_num; relation | stripe_num | chunk_group_num | row_count --------------------------------------------------------------------- no_access | 1 | 0 | 1 no_access | 2 | 0 | 1 no_access | 3 | 0 | 1 columnar_permissions | 1 | 0 | 1 columnar_permissions | 2 | 0 | 1 columnar_permissions | 3 | 0 | 1 columnar_permissions | 4 | 0 | 1 (7 rows) drop table columnar_permissions; drop table no_access;