-- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to You under the Apache License, Version 2.0 -- (the "License"); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. DROP TABLE IF EXISTS x_policy_item_datamask; DROP SEQUENCE IF EXISTS x_policy_item_datamask_def_seq; DROP TABLE IF EXISTS x_datamask_type_def; DROP SEQUENCE IF EXISTS x_datamask_type_def_seq; CREATE SEQUENCE x_datamask_type_def_seq; CREATE TABLE x_datamask_type_def ( id BIGINT DEFAULT nextval('x_datamask_type_def_seq'::regclass), guid VARCHAR(64) DEFAULT NULL NULL, create_time TIMESTAMP DEFAULT NULL NULL, update_time TIMESTAMP DEFAULT NULL NULL, added_by_id BIGINT DEFAULT NULL NULL, upd_by_id BIGINT DEFAULT NULL NULL, def_id BIGINT NOT NULL, item_id BIGINT NOT NULL, name VARCHAR(1024) NOT NULL, label VARCHAR(1024) NOT NULL, description VARCHAR(1024) DEFAULT NULL NULL, transformer VARCHAR(1024) DEFAULT NULL NULL, datamask_options VARCHAR(1024) DEFAULT NULL NULL, rb_key_label VARCHAR(1024) DEFAULT NULL NULL, rb_key_description VARCHAR(1024) DEFAULT NULL NULL, sort_order INT DEFAULT '0' NULL, primary key (id), CONSTRAINT x_datamask_type_def_FK_def_id FOREIGN KEY (def_id) REFERENCES x_service_def (id) , CONSTRAINT x_datamask_type_def_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_datamask_type_def_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); CREATE INDEX x_datamask_type_def_IDX_def_id ON x_datamask_type_def(def_id); CREATE SEQUENCE x_policy_item_datamask_seq; CREATE TABLE x_policy_item_datamask ( id BIGINT DEFAULT nextval('x_policy_item_datamask_seq'::regclass), guid VARCHAR(64) DEFAULT NULL NULL, create_time TIMESTAMP DEFAULT NULL NULL, update_time TIMESTAMP DEFAULT NULL NULL, added_by_id BIGINT DEFAULT NULL NULL, upd_by_id BIGINT DEFAULT NULL NULL, policy_item_id BIGINT NOT NULL, type BIGINT NOT NULL, condition_expr VARCHAR(1024) DEFAULT NULL NULL, value_expr VARCHAR(1024) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_policy_item_datamask_FK_policy_item_id FOREIGN KEY (policy_item_id) REFERENCES x_policy_item (id) , CONSTRAINT x_policy_item_datamask_FK_type FOREIGN KEY (type) REFERENCES x_datamask_type_def (id), CONSTRAINT x_policy_item_datamask_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_policy_item_datamask_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); CREATE INDEX x_policy_item_datamask_IDX_policy_item_id ON x_policy_item_datamask(policy_item_id); DROP TABLE IF EXISTS x_policy_item_rowfilter; DROP SEQUENCE IF EXISTS x_policy_item_rowfilter_seq; CREATE SEQUENCE x_policy_item_rowfilter_seq; CREATE TABLE x_policy_item_rowfilter ( id BIGINT DEFAULT nextval('x_policy_item_rowfilter_seq'::regclass), guid VARCHAR(64) DEFAULT NULL NULL, create_time TIMESTAMP DEFAULT NULL NULL, update_time TIMESTAMP DEFAULT NULL NULL, added_by_id BIGINT DEFAULT NULL NULL, upd_by_id BIGINT DEFAULT NULL NULL, policy_item_id BIGINT NOT NULL, filter_expr VARCHAR(1024) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_policy_item_rowfilter_FK_policy_item_id FOREIGN KEY (policy_item_id) REFERENCES x_policy_item (id) , CONSTRAINT x_policy_item_rowfilter_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_policy_item_rowfilter_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); CREATE INDEX x_policy_item_rowfilter_IDX_policy_item_id ON x_policy_item_rowfilter(policy_item_id); select 'delimiter start'; /* add x_access_type_def.datamask_options column if it does not exist */ CREATE OR REPLACE FUNCTION add_datamask_options_to_x_access_type_def_table() RETURNS void AS $$ DECLARE exists_access_type_def_datamask_options integer := 0; exists_access_type_def_rowfilter_options integer := 0; BEGIN select count(*) into exists_access_type_def_datamask_options from pg_attribute where attrelid in(select oid from pg_class where relname='x_access_type_def') and attname='datamask_options'; select count(*) into exists_access_type_def_rowfilter_options from pg_attribute where attrelid in(select oid from pg_class where relname='x_access_type_def') and attname='rowfilter_options'; IF exists_access_type_def_datamask_options = 0 THEN ALTER TABLE x_access_type_def ADD COLUMN datamask_options VARCHAR(1024) DEFAULT NULL NULL; END IF; IF exists_access_type_def_rowfilter_options = 0 THEN ALTER TABLE x_access_type_def ADD COLUMN rowfilter_options VARCHAR(1024) DEFAULT NULL NULL; END IF; END; $$ LANGUAGE plpgsql; select 'delimiter end'; /* add x_resource_def.datamask_options column if it does not exist */ CREATE OR REPLACE FUNCTION add_datamask_options_to_x_resource_def_table() RETURNS void AS $$ DECLARE exists_resource_def_datamask_options integer := 0; exists_resource_def_rowfilter_options integer := 0; BEGIN select count(*) into exists_resource_def_datamask_options from pg_attribute where attrelid in(select oid from pg_class where relname='x_resource_def') and attname='datamask_options'; select count(*) into exists_resource_def_rowfilter_options from pg_attribute where attrelid in(select oid from pg_class where relname='x_resource_def') and attname='rowfilter_options'; IF exists_resource_def_datamask_options = 0 THEN ALTER TABLE x_resource_def ADD COLUMN datamask_options VARCHAR(1024) DEFAULT NULL NULL; END IF; IF exists_resource_def_rowfilter_options = 0 THEN ALTER TABLE x_resource_def ADD COLUMN rowfilter_options VARCHAR(1024) DEFAULT NULL NULL; END IF; END; $$ LANGUAGE plpgsql; select 'delimiter end'; -- function callLocalUDFs CREATE OR REPLACE FUNCTION callLocalUDFs() RETURNS void AS $$ BEGIN perform add_datamask_options_to_x_access_type_def_table(); perform add_datamask_options_to_x_resource_def_table(); END; $$ LANGUAGE plpgsql; select callLocalUDFs(); select 'delimiter end';