blob: ea5b2abbc4d0c01470b23e471a105365bd029a9b [file] [log] [blame]
-- 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';