-- 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. CREATE OR REPLACE PROCEDURE spdropsequence(ObjName IN varchar2) IS v_counter integer; BEGIN select count(*) into v_counter from user_sequences where sequence_name = upper(ObjName); if (v_counter > 0) then execute immediate 'DROP SEQUENCE ' || ObjName; end if; END;/ / call spdropsequence('X_POLICY_REF_RESOURCE_SEQ'); call spdropsequence('X_POLICY_REF_ACCESS_TYPE_SEQ'); call spdropsequence('X_POLICY_REF_CONDITION_SEQ'); call spdropsequence('X_POLICY_REF_DATAMASK_TYPE_SEQ'); call spdropsequence('X_POLICY_REF_USER_SEQ'); call spdropsequence('X_POLICY_REF_GROUP_SEQ'); CREATE OR REPLACE PROCEDURE spdroptable(ObjName IN varchar2) IS v_counter integer; BEGIN select count(*) into v_counter from user_tables where table_name = upper(ObjName); if (v_counter > 0) then execute immediate 'drop table ' || ObjName || ' cascade constraints'; end if; END;/ / call spdroptable('x_policy_ref_group'); call spdroptable('x_policy_ref_user'); call spdroptable('x_policy_ref_datamask_type'); call spdroptable('x_policy_ref_condition'); call spdroptable('x_policy_ref_access_type'); call spdroptable('x_policy_ref_resource'); CREATE SEQUENCE X_POLICY_REF_RESOURCE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE SEQUENCE X_POLICY_REF_ACCESS_TYPE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE SEQUENCE X_POLICY_REF_CONDITION_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE SEQUENCE X_POLICY_REF_DATAMASK_TYPE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE SEQUENCE X_POLICY_REF_USER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE SEQUENCE X_POLICY_REF_GROUP_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; commit; CREATE TABLE x_policy_ref_resource ( id NUMBER(20) NOT NULL, guid VARCHAR(1024) DEFAULT NULL NULL, create_time DATE DEFAULT NULL NULL, update_time DATE DEFAULT NULL NULL, added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, policy_id NUMBER(20) NOT NULL, resource_def_id NUMBER(20) NOT NULL, resource_name VARCHAR(4000) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_p_ref_res_UK_polId_resDefId UNIQUE (policy_id, resource_def_id), CONSTRAINT x_p_ref_res_FK_policy_id FOREIGN KEY (policy_id) REFERENCES x_policy (id), CONSTRAINT x_p_ref_res_FK_resource_def_id FOREIGN KEY (resource_def_id) REFERENCES x_resource_def (id), CONSTRAINT x_p_ref_res_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_p_ref_res_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); commit; CREATE TABLE x_policy_ref_access_type ( id NUMBER(20) NOT NULL, guid VARCHAR(1024) DEFAULT NULL NULL, create_time DATE DEFAULT NULL NULL, update_time DATE DEFAULT NULL NULL, added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, policy_id NUMBER(20) NOT NULL, access_def_id NUMBER(20) NOT NULL, access_type_name VARCHAR(4000) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_p_ref_acc_UK_polId_accDefId UNIQUE(policy_id, access_def_id), CONSTRAINT x_p_ref_acc_FK_policy_id FOREIGN KEY (policy_id) REFERENCES x_policy (id), CONSTRAINT x_p_ref_acc_FK_acc_def_id FOREIGN KEY (access_def_id) REFERENCES x_access_type_def (id), CONSTRAINT x_p_ref_acc_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_p_ref_acc_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); commit; CREATE TABLE x_policy_ref_condition ( id NUMBER(20) NOT NULL, guid VARCHAR(1024) DEFAULT NULL NULL, create_time DATE DEFAULT NULL NULL, update_time DATE DEFAULT NULL NULL, added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, policy_id NUMBER(20) NOT NULL, condition_def_id NUMBER(20) NOT NULL, condition_name VARCHAR(4000) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_p_ref_cond_UK_polId_cDefId UNIQUE(policy_id, condition_def_id), CONSTRAINT x_p_ref_cond_FK_policy_id FOREIGN KEY (policy_id) REFERENCES x_policy (id), CONSTRAINT x_p_ref_cond_FK_cond_def_id FOREIGN KEY (condition_def_id) REFERENCES x_policy_condition_def (id), CONSTRAINT x_p_ref_cond_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_p_ref_cond_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); commit; CREATE TABLE x_policy_ref_datamask_type ( id NUMBER(20) NOT NULL, guid VARCHAR(1024) DEFAULT NULL NULL, create_time DATE DEFAULT NULL NULL, update_time DATE DEFAULT NULL NULL, added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, policy_id NUMBER(20) NOT NULL, datamask_def_id NUMBER(20) NOT NULL, datamask_type_name VARCHAR(4000) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_p_ref_dmsk_UK_polId_dDefId UNIQUE(policy_id, datamask_def_id), CONSTRAINT x_p_ref_dmsk_FK_policy_id FOREIGN KEY (policy_id) REFERENCES x_policy (id), CONSTRAINT x_p_ref_dmsk_FK_dmk_def_id FOREIGN KEY (datamask_def_id) REFERENCES x_datamask_type_def (id), CONSTRAINT x_p_ref_dmsk_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_p_ref_dmsk_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); commit; CREATE TABLE x_policy_ref_user ( id NUMBER(20) NOT NULL, guid VARCHAR(1024) DEFAULT NULL NULL, create_time DATE DEFAULT NULL NULL, update_time DATE DEFAULT NULL NULL, added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, policy_id NUMBER(20) NOT NULL, user_id NUMBER(20) NOT NULL, user_name VARCHAR(4000) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_p_ref_usr_UK_polId_userId UNIQUE(policy_id, user_id), CONSTRAINT x_p_ref_usr_FK_policy_id FOREIGN KEY (policy_id) REFERENCES x_policy (id), CONSTRAINT x_p_ref_usr_FK_user_id FOREIGN KEY (user_id) REFERENCES x_user (id), CONSTRAINT x_p_ref_usr_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_p_ref_usr_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); commit; CREATE TABLE x_policy_ref_group ( id NUMBER(20) NOT NULL, guid VARCHAR(1024) DEFAULT NULL NULL, create_time DATE DEFAULT NULL NULL, update_time DATE DEFAULT NULL NULL, added_by_id NUMBER(20) DEFAULT NULL NULL, upd_by_id NUMBER(20) DEFAULT NULL NULL, policy_id NUMBER(20) NOT NULL, group_id NUMBER(20) NOT NULL, group_name VARCHAR(4000) DEFAULT NULL NULL, primary key (id), CONSTRAINT x_p_ref_grp_UK_polId_grpId UNIQUE(policy_id, group_id), CONSTRAINT x_p_ref_grp_FK_policy_id FOREIGN KEY (policy_id) REFERENCES x_policy (id), CONSTRAINT x_p_ref_grp_FK_group_id FOREIGN KEY (group_id) REFERENCES x_group (id), CONSTRAINT x_p_ref_grp_FK_added_by_id FOREIGN KEY (added_by_id) REFERENCES x_portal_user (id), CONSTRAINT x_p_ref_grp_FK_upd_by_id FOREIGN KEY (upd_by_id) REFERENCES x_portal_user (id) ); commit; DECLARE v_column_exists number := 0; BEGIN Select count(*) into v_column_exists from user_tab_cols where column_name = upper('policy_text') and table_name = upper('x_policy'); if (v_column_exists = 0) then execute immediate 'ALTER TABLE x_policy ADD policy_text CLOB DEFAULT NULL NULL'; commit; end if; end;/ CREATE OR REPLACE PROCEDURE removeConstraints(ObjName IN varchar2) IS BEGIN FOR rec IN( select owner, constraint_name from all_constraints where owner = sys_context('userenv','current_schema') and table_name = ObjName and constraint_type = 'R') LOOP execute immediate 'ALTER TABLE ' || rec.owner || '.' || ObjName || ' DROP CONSTRAINT ' || rec.constraint_name; END LOOP; END;/ / CALL removeConstraints('X_POLICY_ITEM'); CALL removeConstraints('X_POLICY_ITEM_ACCESS'); CALL removeConstraints('X_POLICY_ITEM_CONDITION'); CALL removeConstraints('X_POLICY_ITEM_DATAMASK'); CALL removeConstraints('X_POLICY_ITEM_GROUP_PERM'); CALL removeConstraints('X_POLICY_RESOURCE'); CALL removeConstraints('X_POLICY_RESOURCE_MAP'); CALL removeConstraints('X_POLICY_ITEM_USER_PERM'); CALL removeConstraints('X_POLICY_ITEM_ROWFILTER'); DECLARE v_record_exists number := 0; new_atlas_def_name VARCHAR(1024); sql_stmt VARCHAR(1024); BEGIN select count(*) into v_record_exists from x_db_version_h where version = 'J10013'; if (v_record_exists = 1) then select count(*) into v_record_exists from x_service_def where name like 'atlas.%'; if (v_record_exists > 0) then select name into new_atlas_def_name from x_service_def where name like 'atlas.%'; end if; select count(*) into v_record_exists from x_access_type_def where def_id in(select id from x_service_def where name='tag') and name in('atlas:read','atlas:create','atlas:update','atlas:delete','atlas:all'); if (v_record_exists > 0) then sql_stmt := 'UPDATE x_access_type_def set name=concat(:1,:2) where def_id=100 and name=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':create','atlas:create'; sql_stmt := 'UPDATE x_access_type_def set name=concat(:1,:2) where def_id=100 and name=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':update','atlas:update'; sql_stmt := 'UPDATE x_access_type_def set name=concat(:1,:2) where def_id=100 and name=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':delete','atlas:delete'; sql_stmt := 'UPDATE x_access_type_def set name=concat(:1,:2) where def_id=100 and name=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':read','atlas:read'; sql_stmt := 'UPDATE x_access_type_def set name=concat(:1,:2) where def_id=100 and name=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':all','atlas:all'; end if; select count(*) into v_record_exists from x_access_type_def_grants where atd_id in (select id from x_access_type_def where def_id in (select id from x_service_def where name='tag') and name like 'atlas%') and implied_grant in ('atlas:read','atlas:create','atlas:update','atlas:delete','atlas:all'); if (v_record_exists > 0) then sql_stmt := 'UPDATE x_access_type_def_grants set implied_grant=concat(:1,:2) where implied_grant=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':create','atlas:create'; sql_stmt := 'UPDATE x_access_type_def_grants set implied_grant=concat(:1,:2) where implied_grant=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':update','atlas:update'; sql_stmt := 'UPDATE x_access_type_def_grants set implied_grant=concat(:1,:2) where implied_grant=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':delete','atlas:delete'; sql_stmt := 'UPDATE x_access_type_def_grants set implied_grant=concat(:1,:2) where implied_grant=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':read','atlas:read'; sql_stmt := 'UPDATE x_access_type_def_grants set implied_grant=concat(:1,:2) where implied_grant=:3'; EXECUTE IMMEDIATE sql_stmt USING new_atlas_def_name,':all','atlas:all'; end if; end if; commit; end;/