-- -- Regression Test for DDL of Object Permission Checks --
-- clean-up in case a prior regression run failed SET client_min_messages TO'warning'; DROPDATABASEIFEXISTS sepgsql_test_regression; DROP USER IFEXISTS regress_sepgsql_test_user;
RESET client_min_messages;
-- confirm required permissions using audit messages -- @SECURITY-CONTEXT=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 SET sepgsql.debug_audit = true; SET client_min_messages = LOG;
GRANTALLONSCHEMA regtest_schema TO regress_sepgsql_test_user;
SET search_path = regtest_schema, public;
CREATETABLE regtest_table (x serial primarykey, y text);
ALTERTABLE regtest_table ADDCOLUMN z int;
CREATETABLE regtest_table_2 (a int);
CREATETABLE regtest_ptable (a int) PARTITION BY RANGE (a); CREATETABLE regtest_ptable_ones PARTITION OF regtest_ptable FORVALUESFROM ('0') TO ('10'); CREATETABLE regtest_ptable_tens PARTITION OF regtest_ptable FORVALUESFROM ('10') TO ('100');
ALTERTABLE regtest_ptable ADDCOLUMN q int;
-- corresponding toast table should not have label and permission checks ALTERTABLE regtest_table_2 ADDCOLUMN b text;
-- VACUUM FULL internally create a new table and swap them later.
VACUUM FULL regtest_table;
VACUUM FULL regtest_ptable;
CREATE VIEW regtest_view ASSELECT * FROM regtest_table WHERE x < 100; CREATE VIEW regtest_pview ASSELECT * FROM regtest_ptable WHERE a < 99;
CREATE SEQUENCE regtest_seq;
CREATE TYPE regtest_comptype AS (a int, b text);
CREATE FUNCTION regtest_func(text,int[]) RETURNS bool LANGUAGE plpgsql AS'BEGIN RAISE NOTICE ''regtest_func => %'', $1; RETURN true; END';
-- CREATE objects owned by others SET SESSION AUTHORIZATION regress_sepgsql_test_user;
SET search_path = regtest_schema, public;
CREATETABLE regtest_table_3 (x int, y serial); CREATETABLE regtest_ptable_3 (o int, p serial) PARTITION BY RANGE (o); CREATETABLE regtest_ptable_3_ones PARTITION OF regtest_ptable_3 FORVALUESFROM ('0') to ('10'); CREATETABLE regtest_ptable_3_tens PARTITION OF regtest_ptable_3 FORVALUESFROM ('10') to('100');
CREATE VIEW regtest_view_2 ASSELECT * FROM regtest_table_3 WHERE x < y; CREATE VIEW regtest_pview_2 ASSELECT * FROM regtest_ptable_3 WHERE o < p;
CREATE FUNCTION regtest_func_2(int) RETURNS bool LANGUAGE plpgsql AS'BEGIN RETURN $1 * $1 < 100; END';
RESET SESSION AUTHORIZATION;
-- -- ALTER and CREATE/DROP extra attribute permissions -- CREATETABLE regtest_table_4 (x intprimarykey, y int, z int); CREATEINDEX regtest_index_tbl4_y ON regtest_table_4(y); CREATEINDEX regtest_index_tbl4_z ON regtest_table_4(z); ALTERTABLE regtest_table_4 ALTERCOLUMN y TYPE float; DROPINDEX regtest_index_tbl4_y; ALTERTABLE regtest_table_4 ADDCONSTRAINT regtest_tbl4_con EXCLUDE USING btree (z WITH =); DROPTABLE regtest_table_4 CASCADE;
-- For partitioned tables CREATETABLE regtest_ptable_4 (x int, y int, z int) PARTITION BY RANGE (x); CREATETABLE regtest_ptable_4_ones PARTITION OF regtest_ptable_4 FORVALUESFROM ('0') TO ('10');
CREATEINDEX regtest_pindex_tbl4_y ON regtest_ptable_4_ones(y); CREATEINDEX regtest_pindex_tbl4_z ON regtest_ptable_4_ones(z); ALTERTABLE regtest_ptable_4 ALTERCOLUMN y TYPE float; DROPINDEX regtest_pindex_tbl4_y; ALTERTABLE regtest_ptable_4_ones ADDCONSTRAINT regtest_ptbl4_con EXCLUDE USING btree (z WITH =); DROPTABLE regtest_ptable_4 CASCADE;
-- -- DROP Permission checks (with clean-up) --
DROP FUNCTION regtest_func(text,int[]); DROP AGGREGATE regtest_agg(int);
DROP SEQUENCE regtest_seq; DROP VIEW regtest_view;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.