mirror of https://github.com/postgres/postgres
parent
bc5334d867
commit
1cea9bbb21
@ -0,0 +1,192 @@ |
|||||||
|
-- |
||||||
|
-- Test for various ALTER statements |
||||||
|
-- |
||||||
|
-- clean-up in case a prior regression run failed |
||||||
|
SET client_min_messages TO 'warning'; |
||||||
|
DROP DATABASE IF EXISTS regtest_sepgsql_test_database_1; |
||||||
|
DROP DATABASE IF EXISTS regtest_sepgsql_test_database; |
||||||
|
DROP USER IF EXISTS regtest_sepgsql_test_user; |
||||||
|
RESET client_min_messages; |
||||||
|
SELECT sepgsql_getcon(); -- confirm client privilege |
||||||
|
sepgsql_getcon |
||||||
|
------------------------------------------- |
||||||
|
unconfined_u:unconfined_r:unconfined_t:s0 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
-- |
||||||
|
-- CREATE Objects to be altered (with debug_audit being silent) |
||||||
|
-- |
||||||
|
CREATE DATABASE regtest_sepgsql_test_database_1; |
||||||
|
CREATE USER regtest_sepgsql_test_user; |
||||||
|
CREATE SCHEMA regtest_schema_1; |
||||||
|
CREATE SCHEMA regtest_schema_2; |
||||||
|
GRANT ALL ON SCHEMA regtest_schema_1 TO public; |
||||||
|
GRANT ALL ON SCHEMA regtest_schema_2 TO public; |
||||||
|
SET search_path = regtest_schema_1, regtest_schema_2, public; |
||||||
|
CREATE TABLE regtest_table_1 (a int, b text); |
||||||
|
CREATE TABLE regtest_table_2 (c text) inherits (regtest_table_1); |
||||||
|
CREATE TABLE regtest_table_3 (x int primary key, y text); |
||||||
|
CREATE SEQUENCE regtest_seq_1; |
||||||
|
CREATE VIEW regtest_view_1 AS SELECT * FROM regtest_table_1 WHERE a > 0; |
||||||
|
CREATE FUNCTION regtest_func_1 (text) RETURNS bool |
||||||
|
AS 'BEGIN RETURN true; END' LANGUAGE 'plpgsql'; |
||||||
|
-- switch on debug_audit |
||||||
|
SET sepgsql.debug_audit = true; |
||||||
|
SET client_min_messages = LOG; |
||||||
|
-- |
||||||
|
-- ALTER xxx OWNER TO |
||||||
|
-- |
||||||
|
-- XXX: It should take db_xxx:{setattr} permission checks even if |
||||||
|
-- owner is not actually changed. |
||||||
|
-- |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="database regtest_sepgsql_test_database_1" |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="database regtest_sepgsql_test_database_1" |
||||||
|
ALTER SCHEMA regtest_schema_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
ALTER SCHEMA regtest_schema_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
ALTER TABLE regtest_table_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table_1" |
||||||
|
ALTER TABLE regtest_table_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table_1" |
||||||
|
ALTER SEQUENCE regtest_seq_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="sequence regtest_seq_1" |
||||||
|
ALTER SEQUENCE regtest_seq_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="sequence regtest_seq_1" |
||||||
|
ALTER VIEW regtest_view_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="view regtest_view_1" |
||||||
|
ALTER VIEW regtest_view_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="view regtest_view_1" |
||||||
|
ALTER FUNCTION regtest_func_1(text) OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="function regtest_func_1(text)" |
||||||
|
ALTER FUNCTION regtest_func_1(text) OWNER TO regtest_sepgsql_test_user; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="function regtest_func_1(text)" |
||||||
|
-- |
||||||
|
-- ALTER xxx SET SCHEMA |
||||||
|
-- |
||||||
|
ALTER TABLE regtest_table_1 SET SCHEMA regtest_schema_2; |
||||||
|
LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table_1" |
||||||
|
ALTER SEQUENCE regtest_seq_1 SET SCHEMA regtest_schema_2; |
||||||
|
LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="sequence regtest_seq_1" |
||||||
|
ALTER VIEW regtest_view_1 SET SCHEMA regtest_schema_2; |
||||||
|
LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="view regtest_view_1" |
||||||
|
ALTER FUNCTION regtest_func_1(text) SET SCHEMA regtest_schema_2; |
||||||
|
LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="function regtest_func_1(text)" |
||||||
|
-- |
||||||
|
-- ALTER xxx RENAME TO |
||||||
|
-- |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database_1 RENAME TO regtest_sepgsql_test_database; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="database regtest_sepgsql_test_database_1" |
||||||
|
ALTER SCHEMA regtest_schema_1 RENAME TO regtest_schema; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_1" |
||||||
|
ALTER TABLE regtest_table_1 RENAME TO regtest_table; |
||||||
|
LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table_1" |
||||||
|
ALTER SEQUENCE regtest_seq_1 RENAME TO regtest_seq; |
||||||
|
LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="sequence regtest_seq_1" |
||||||
|
ALTER VIEW regtest_view_1 RENAME TO regtest_view; |
||||||
|
LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="view regtest_view_1" |
||||||
|
ALTER FUNCTION regtest_func_1(text) RENAME TO regtest_func; |
||||||
|
LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="schema regtest_schema_2" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="function regtest_func_1(text)" |
||||||
|
SET search_path = regtest_schema, regtest_schema_2, public; |
||||||
|
-- |
||||||
|
-- misc ALTER commands |
||||||
|
-- |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database CONNECTION LIMIT 999; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="database regtest_sepgsql_test_database" |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database SET search_path TO regtest_schema, public; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ADD COLUMN d float; |
||||||
|
LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column d" |
||||||
|
LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column d" |
||||||
|
ALTER TABLE regtest_table DROP COLUMN d; |
||||||
|
LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column d" |
||||||
|
LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column d" |
||||||
|
ALTER TABLE regtest_table ALTER b SET DEFAULT 'abcd'; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ALTER b SET DEFAULT 'XYZ'; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ALTER b DROP DEFAULT; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ALTER b SET NOT NULL; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column b" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column b" |
||||||
|
ALTER TABLE regtest_table ALTER b DROP NOT NULL; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column b" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column b" |
||||||
|
ALTER TABLE regtest_table ALTER b SET STATISTICS -1; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column b" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column b" |
||||||
|
ALTER TABLE regtest_table ALTER b SET (n_distinct = 999); |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column b" |
||||||
|
ALTER TABLE regtest_table ALTER b SET STORAGE PLAIN; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column b" |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column b" |
||||||
|
ALTER TABLE regtest_table ADD CONSTRAINT test_fk FOREIGN KEY (a) REFERENCES regtest_table_3(x); -- not supported |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table_3" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table" |
||||||
|
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a" |
||||||
|
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table_3" |
||||||
|
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" |
||||||
|
LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x" |
||||||
|
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" |
||||||
|
ALTER TABLE regtest_table ADD CONSTRAINT test_ck CHECK (b like '%abc%') NOT VALID; -- not supported |
||||||
|
ALTER TABLE regtest_table VALIDATE CONSTRAINT test_ck; -- not supported |
||||||
|
ALTER TABLE regtest_table DROP CONSTRAINT test_ck; -- not supported |
||||||
|
CREATE TRIGGER regtest_test_trig BEFORE UPDATE ON regtest_table |
||||||
|
FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); |
||||||
|
ALTER TABLE regtest_table DISABLE TRIGGER regtest_test_trig; -- not supported |
||||||
|
ALTER TABLE regtest_table ENABLE TRIGGER regtest_test_trig; -- not supported |
||||||
|
CREATE RULE regtest_test_rule AS ON INSERT TO regtest_table_3 DO ALSO NOTHING; |
||||||
|
ALTER TABLE regtest_table_3 DISABLE RULE regtest_test_rule; -- not supported |
||||||
|
ALTER TABLE regtest_table_3 ENABLE RULE regtest_test_rule; -- not supported |
||||||
|
ALTER TABLE regtest_table SET WITH OIDS; |
||||||
|
LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column oid" |
||||||
|
LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column oid" |
||||||
|
ALTER TABLE regtest_table SET WITHOUT OIDS; |
||||||
|
LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_2 column oid" |
||||||
|
LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column oid" |
||||||
|
ALTER TABLE regtest_table SET (fillfactor = 75); |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table" |
||||||
|
ALTER TABLE regtest_table RESET (fillfactor); |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table" |
||||||
|
ALTER TABLE regtest_table_2 NO INHERIT regtest_table; -- not supported |
||||||
|
ALTER TABLE regtest_table_2 INHERIT regtest_table; -- not supported |
||||||
|
ALTER TABLE regtest_table SET TABLESPACE pg_default; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="table regtest_table" |
||||||
|
ALTER VIEW regtest_view SET (security_barrier); |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="view regtest_view" |
||||||
|
ALTER SEQUENCE regtest_seq INCREMENT BY 10 START WITH 1000; |
||||||
|
LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="sequence regtest_seq" |
||||||
|
-- |
||||||
|
-- clean-up objects |
||||||
|
-- |
||||||
|
RESET sepgsql.debug_audit; |
||||||
|
RESET client_min_messages; |
||||||
|
DROP DATABASE regtest_sepgsql_test_database; |
||||||
|
DROP SCHEMA regtest_schema CASCADE; |
||||||
|
NOTICE: drop cascades to 3 other objects |
||||||
|
DETAIL: drop cascades to table regtest_table_2 |
||||||
|
drop cascades to table regtest_table_3 |
||||||
|
drop cascades to constraint test_fk on table regtest_table |
||||||
|
DROP SCHEMA regtest_schema_2 CASCADE; |
||||||
|
NOTICE: drop cascades to 4 other objects |
||||||
|
DETAIL: drop cascades to table regtest_table |
||||||
|
drop cascades to sequence regtest_seq |
||||||
|
drop cascades to view regtest_view |
||||||
|
drop cascades to function regtest_func(text) |
||||||
|
DROP USER regtest_sepgsql_test_user; |
@ -0,0 +1,136 @@ |
|||||||
|
-- |
||||||
|
-- Test for various ALTER statements |
||||||
|
-- |
||||||
|
|
||||||
|
-- clean-up in case a prior regression run failed |
||||||
|
SET client_min_messages TO 'warning'; |
||||||
|
DROP DATABASE IF EXISTS regtest_sepgsql_test_database_1; |
||||||
|
DROP DATABASE IF EXISTS regtest_sepgsql_test_database; |
||||||
|
DROP USER IF EXISTS regtest_sepgsql_test_user; |
||||||
|
RESET client_min_messages; |
||||||
|
|
||||||
|
-- @SECURITY-CONTEXT=unconfined_u:unconfined_r:unconfined_t:s0 |
||||||
|
|
||||||
|
-- |
||||||
|
-- CREATE Objects to be altered (with debug_audit being silent) |
||||||
|
-- |
||||||
|
CREATE DATABASE regtest_sepgsql_test_database_1; |
||||||
|
|
||||||
|
CREATE USER regtest_sepgsql_test_user; |
||||||
|
|
||||||
|
CREATE SCHEMA regtest_schema_1; |
||||||
|
CREATE SCHEMA regtest_schema_2; |
||||||
|
|
||||||
|
GRANT ALL ON SCHEMA regtest_schema_1 TO public; |
||||||
|
GRANT ALL ON SCHEMA regtest_schema_2 TO public; |
||||||
|
|
||||||
|
SET search_path = regtest_schema_1, regtest_schema_2, public; |
||||||
|
|
||||||
|
CREATE TABLE regtest_table_1 (a int, b text); |
||||||
|
|
||||||
|
CREATE TABLE regtest_table_2 (c text) inherits (regtest_table_1); |
||||||
|
|
||||||
|
CREATE TABLE regtest_table_3 (x int primary key, y text); |
||||||
|
|
||||||
|
CREATE SEQUENCE regtest_seq_1; |
||||||
|
|
||||||
|
CREATE VIEW regtest_view_1 AS SELECT * FROM regtest_table_1 WHERE a > 0; |
||||||
|
|
||||||
|
CREATE FUNCTION regtest_func_1 (text) RETURNS bool |
||||||
|
AS 'BEGIN RETURN true; END' LANGUAGE 'plpgsql'; |
||||||
|
|
||||||
|
-- switch on debug_audit |
||||||
|
SET sepgsql.debug_audit = true; |
||||||
|
SET client_min_messages = LOG; |
||||||
|
|
||||||
|
-- |
||||||
|
-- ALTER xxx OWNER TO |
||||||
|
-- |
||||||
|
-- XXX: It should take db_xxx:{setattr} permission checks even if |
||||||
|
-- owner is not actually changed. |
||||||
|
-- |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER SCHEMA regtest_schema_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER SCHEMA regtest_schema_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER TABLE regtest_table_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER TABLE regtest_table_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER SEQUENCE regtest_seq_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER SEQUENCE regtest_seq_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER VIEW regtest_view_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER VIEW regtest_view_1 OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER FUNCTION regtest_func_1(text) OWNER TO regtest_sepgsql_test_user; |
||||||
|
ALTER FUNCTION regtest_func_1(text) OWNER TO regtest_sepgsql_test_user; |
||||||
|
|
||||||
|
-- |
||||||
|
-- ALTER xxx SET SCHEMA |
||||||
|
-- |
||||||
|
ALTER TABLE regtest_table_1 SET SCHEMA regtest_schema_2; |
||||||
|
ALTER SEQUENCE regtest_seq_1 SET SCHEMA regtest_schema_2; |
||||||
|
ALTER VIEW regtest_view_1 SET SCHEMA regtest_schema_2; |
||||||
|
ALTER FUNCTION regtest_func_1(text) SET SCHEMA regtest_schema_2; |
||||||
|
|
||||||
|
-- |
||||||
|
-- ALTER xxx RENAME TO |
||||||
|
-- |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database_1 RENAME TO regtest_sepgsql_test_database; |
||||||
|
ALTER SCHEMA regtest_schema_1 RENAME TO regtest_schema; |
||||||
|
ALTER TABLE regtest_table_1 RENAME TO regtest_table; |
||||||
|
ALTER SEQUENCE regtest_seq_1 RENAME TO regtest_seq; |
||||||
|
ALTER VIEW regtest_view_1 RENAME TO regtest_view; |
||||||
|
ALTER FUNCTION regtest_func_1(text) RENAME TO regtest_func; |
||||||
|
|
||||||
|
SET search_path = regtest_schema, regtest_schema_2, public; |
||||||
|
|
||||||
|
-- |
||||||
|
-- misc ALTER commands |
||||||
|
-- |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database CONNECTION LIMIT 999; |
||||||
|
ALTER DATABASE regtest_sepgsql_test_database SET search_path TO regtest_schema, public; -- not supported yet |
||||||
|
|
||||||
|
ALTER TABLE regtest_table ADD COLUMN d float; |
||||||
|
ALTER TABLE regtest_table DROP COLUMN d; |
||||||
|
ALTER TABLE regtest_table ALTER b SET DEFAULT 'abcd'; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ALTER b SET DEFAULT 'XYZ'; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ALTER b DROP DEFAULT; -- not supported yet |
||||||
|
ALTER TABLE regtest_table ALTER b SET NOT NULL; |
||||||
|
ALTER TABLE regtest_table ALTER b DROP NOT NULL; |
||||||
|
ALTER TABLE regtest_table ALTER b SET STATISTICS -1; |
||||||
|
ALTER TABLE regtest_table ALTER b SET (n_distinct = 999); |
||||||
|
ALTER TABLE regtest_table ALTER b SET STORAGE PLAIN; |
||||||
|
ALTER TABLE regtest_table ADD CONSTRAINT test_fk FOREIGN KEY (a) REFERENCES regtest_table_3(x); -- not supported |
||||||
|
ALTER TABLE regtest_table ADD CONSTRAINT test_ck CHECK (b like '%abc%') NOT VALID; -- not supported |
||||||
|
ALTER TABLE regtest_table VALIDATE CONSTRAINT test_ck; -- not supported |
||||||
|
ALTER TABLE regtest_table DROP CONSTRAINT test_ck; -- not supported |
||||||
|
|
||||||
|
CREATE TRIGGER regtest_test_trig BEFORE UPDATE ON regtest_table |
||||||
|
FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); |
||||||
|
|
||||||
|
ALTER TABLE regtest_table DISABLE TRIGGER regtest_test_trig; -- not supported |
||||||
|
ALTER TABLE regtest_table ENABLE TRIGGER regtest_test_trig; -- not supported |
||||||
|
|
||||||
|
CREATE RULE regtest_test_rule AS ON INSERT TO regtest_table_3 DO ALSO NOTHING; |
||||||
|
ALTER TABLE regtest_table_3 DISABLE RULE regtest_test_rule; -- not supported |
||||||
|
ALTER TABLE regtest_table_3 ENABLE RULE regtest_test_rule; -- not supported |
||||||
|
|
||||||
|
ALTER TABLE regtest_table SET WITH OIDS; |
||||||
|
ALTER TABLE regtest_table SET WITHOUT OIDS; |
||||||
|
ALTER TABLE regtest_table SET (fillfactor = 75); |
||||||
|
ALTER TABLE regtest_table RESET (fillfactor); |
||||||
|
ALTER TABLE regtest_table_2 NO INHERIT regtest_table; -- not supported |
||||||
|
ALTER TABLE regtest_table_2 INHERIT regtest_table; -- not supported |
||||||
|
ALTER TABLE regtest_table SET TABLESPACE pg_default; |
||||||
|
|
||||||
|
ALTER VIEW regtest_view SET (security_barrier); |
||||||
|
|
||||||
|
ALTER SEQUENCE regtest_seq INCREMENT BY 10 START WITH 1000; |
||||||
|
|
||||||
|
-- |
||||||
|
-- clean-up objects |
||||||
|
-- |
||||||
|
RESET sepgsql.debug_audit; |
||||||
|
RESET client_min_messages; |
||||||
|
DROP DATABASE regtest_sepgsql_test_database; |
||||||
|
DROP SCHEMA regtest_schema CASCADE; |
||||||
|
DROP SCHEMA regtest_schema_2 CASCADE; |
||||||
|
DROP USER regtest_sepgsql_test_user; |
Loading…
Reference in new issue