security-admin/db/postgres/patches/067-create-gds-tables.sql (217 lines of code) (raw):

-- 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_gds_dataset_policy_map; DROP TABLE IF EXISTS x_gds_project_policy_map; DROP TABLE IF EXISTS x_gds_dataset CASCADE; DROP TABLE IF EXISTS x_gds_project CASCADE; DROP TABLE IF EXISTS x_gds_data_share CASCADE; DROP TABLE IF EXISTS x_gds_shared_resource CASCADE; DROP TABLE IF EXISTS x_gds_data_share_in_dataset CASCADE; DROP TABLE IF EXISTS x_gds_dataset_in_project CASCADE; DROP SEQUENCE IF EXISTS x_gds_project_policy_map_seq; DROP SEQUENCE IF EXISTS x_gds_dataset_policy_map_seq; DROP SEQUENCE IF EXISTS X_GDS_DATASET_SEQ; DROP SEQUENCE IF EXISTS X_GDS_PROJECT_SEQ; DROP SEQUENCE IF EXISTS X_GDS_DATA_SHARE_SEQ; DROP SEQUENCE IF EXISTS X_GDS_SHARED_RESOURCE_SEQ; DROP SEQUENCE IF EXISTS X_GDS_DATA_SHARE_IN_DATASET_SEQ; DROP SEQUENCE IF EXISTS X_GDS_DATASET_IN_PROJECT_SEQ; CREATE SEQUENCE X_GDS_DATASET_SEQ; CREATE TABLE x_gds_dataset ( id BIGINT NOT NULL DEFAULT nextval('X_GDS_DATASET_SEQ'::regclass) , guid VARCHAR(64) NOT NULL , create_time TIMESTAMP NULL DEFAULT NULL , update_time TIMESTAMP NULL DEFAULT NULL , added_by_id BIGINT NULL DEFAULT NULL , upd_by_id BIGINT NULL DEFAULT NULL , version BIGINT NOT NULL DEFAULT 1 , is_enabled BOOLEAN NOT NULL DEFAULT '1' , name VARCHAR(512) NOT NULL , description TEXT NULL DEFAULT NULL , acl TEXT NULL DEFAULT NULL , terms_of_use TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_dataset_UK_name UNIQUE(name) , CONSTRAINT x_gds_dataset_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dataset_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) ); CREATE INDEX x_gds_dataset_guid ON x_gds_dataset(guid); commit; CREATE SEQUENCE X_GDS_PROJECT_SEQ; CREATE TABLE x_gds_project ( id BIGINT NOT NULL DEFAULT nextval('X_GDS_PROJECT_SEQ'::regclass) , guid VARCHAR(64) NOT NULL , create_time TIMESTAMP NULL DEFAULT NULL , update_time TIMESTAMP NULL DEFAULT NULL , added_by_id BIGINT NULL DEFAULT NULL , upd_by_id BIGINT NULL DEFAULT NULL , version BIGINT NOT NULL DEFAULT 1 , is_enabled BOOLEAN NOT NULL DEFAULT '1' , name VARCHAR(512) NOT NULL , description TEXT NULL DEFAULT NULL , acl TEXT NULL DEFAULT NULL , terms_of_use TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_project_UK_name UNIQUE(name) , CONSTRAINT x_gds_project_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_project_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) ); CREATE INDEX x_gds_project_guid ON x_gds_project(guid); commit; CREATE SEQUENCE X_GDS_DATA_SHARE_SEQ; CREATE TABLE x_gds_data_share( id BIGINT NOT NULL DEFAULT nextval('X_GDS_DATA_SHARE_SEQ'::regclass) , guid VARCHAR(64) NOT NULL , create_time TIMESTAMP NULL DEFAULT NULL , update_time TIMESTAMP NULL DEFAULT NULL , added_by_id BIGINT NULL DEFAULT NULL , upd_by_id BIGINT NULL DEFAULT NULL , version BIGINT NOT NULL DEFAULT 1 , is_enabled BOOLEAN NOT NULL DEFAULT '1' , name VARCHAR(512) NOT NULL , description TEXT NULL DEFAULT NULL , acl TEXT NOT NULL , service_id BIGINT NOT NULL , zone_id BIGINT NOT NULL , condition_expr TEXT NULL , default_access_types TEXT NULL , default_tag_masks TEXT NULL , terms_of_use TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_data_share_UK_name UNIQUE(service_id, zone_id, name) , CONSTRAINT x_gds_data_share_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_data_share_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_data_share_FK_service_id FOREIGN KEY(service_id) REFERENCES x_service(id) , CONSTRAINT x_gds_data_share_FK_zone_id FOREIGN KEY(zone_id) REFERENCES x_security_zone(id) ); CREATE INDEX x_gds_data_share_guid ON x_gds_data_share(guid); CREATE INDEX x_gds_data_share_service_id ON x_gds_data_share(service_id); CREATE INDEX x_gds_data_share_zone_id ON x_gds_data_share(zone_id); commit; CREATE SEQUENCE X_GDS_SHARED_RESOURCE_SEQ; CREATE TABLE x_gds_shared_resource( id BIGINT NOT NULL DEFAULT nextval('X_GDS_SHARED_RESOURCE_SEQ'::regclass) , guid VARCHAR(64) NOT NULL , create_time TIMESTAMP NULL DEFAULT NULL , update_time TIMESTAMP NULL DEFAULT NULL , added_by_id BIGINT NULL DEFAULT NULL , upd_by_id BIGINT NULL DEFAULT NULL , version BIGINT NOT NULL DEFAULT 1 , is_enabled BOOLEAN NOT NULL DEFAULT '1' , name VARCHAR(512) NOT NULL , description TEXT NULL DEFAULT NULL , data_share_id BIGINT NOT NULL , resource TEXT NOT NULL , resource_signature VARCHAR(128) NOT NULL , sub_resource TEXT NULL DEFAULT NULL , sub_resource_type TEXT NULL DEFAULT NULL , condition_expr TEXT NULL DEFAULT NULL , access_types TEXT NULL DEFAULT NULL , row_filter TEXT NULL DEFAULT NULL , sub_resource_masks TEXT NULL DEFAULT NULL , profiles TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_shared_resource_UK_name UNIQUE(data_share_id, name) , CONSTRAINT x_gds_shared_resource_UK_resource_signature UNIQUE(data_share_id, resource_signature) , CONSTRAINT x_gds_shared_resource_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_shared_resource_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_shared_resource_FK_data_share_id FOREIGN KEY(data_share_id) REFERENCES x_gds_data_share(id) ); CREATE INDEX x_gds_shared_resource_guid ON x_gds_shared_resource(guid); CREATE INDEX x_gds_shared_resource_data_share_id ON x_gds_shared_resource(data_share_id); commit; CREATE SEQUENCE X_GDS_DATA_SHARE_IN_DATASET_SEQ; CREATE TABLE x_gds_data_share_in_dataset( id BIGINT NOT NULL DEFAULT nextval('X_GDS_SHARED_RESOURCE_SEQ'::regclass) , guid VARCHAR(64) NOT NULL , create_time TIMESTAMP NULL DEFAULT NULL , update_time TIMESTAMP NULL DEFAULT NULL , added_by_id BIGINT NULL DEFAULT NULL , upd_by_id BIGINT NULL DEFAULT NULL , version BIGINT NOT NULL DEFAULT 1 , is_enabled BOOLEAN NOT NULL DEFAULT '1' , description TEXT NULL DEFAULT NULL , data_share_id BIGINT NOT NULL , dataset_id BIGINT NOT NULL , status SMALLINT NOT NULL , validity_period TEXT NULL DEFAULT NULL , profiles TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL , approver_id BIGINT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_dshid_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dshid_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dshid_FK_data_share_id FOREIGN KEY(data_share_id) REFERENCES x_gds_data_share(id) , CONSTRAINT x_gds_dshid_FK_dataset_id FOREIGN KEY(dataset_id) REFERENCES x_gds_dataset(id) , CONSTRAINT x_gds_dshid_UK_data_share_id_dataset_id UNIQUE(data_share_id, dataset_id) , CONSTRAINT x_gds_dshid_FK_approver_id FOREIGN KEY(approver_id) REFERENCES x_portal_user(id) ); CREATE INDEX x_gds_dshid_guid ON x_gds_data_share_in_dataset(guid); CREATE INDEX x_gds_dshid_data_share_id ON x_gds_data_share_in_dataset(data_share_id); CREATE INDEX x_gds_dshid_dataset_id ON x_gds_data_share_in_dataset(dataset_id); CREATE INDEX x_gds_dshid_data_share_id_dataset_id ON x_gds_data_share_in_dataset(data_share_id, dataset_id); commit; CREATE SEQUENCE X_GDS_DATASET_IN_PROJECT_SEQ; CREATE TABLE x_gds_dataset_in_project( id BIGINT NOT NULL DEFAULT nextval('X_GDS_DATASET_IN_PROJECT_SEQ'::regclass) , guid VARCHAR(64) NOT NULL , create_time TIMESTAMP NULL DEFAULT NULL , update_time TIMESTAMP NULL DEFAULT NULL , added_by_id BIGINT NULL DEFAULT NULL , upd_by_id BIGINT NULL DEFAULT NULL , version BIGINT NOT NULL DEFAULT 1 , is_enabled BOOLEAN NOT NULL DEFAULT '1' , description TEXT NULL DEFAULT NULL , dataset_id BIGINT NOT NULL , project_id BIGINT NOT NULL , status SMALLINT NOT NULL , validity_period TEXT NULL DEFAULT NULL , profiles TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL , approver_id BIGINT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_dip_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dip_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dip_FK_dataset_id FOREIGN KEY(dataset_id) REFERENCES x_gds_dataset(id) , CONSTRAINT x_gds_dip_FK_project_id FOREIGN KEY(project_id) REFERENCES x_gds_project(id) , CONSTRAINT x_gds_dip_UK_data_share_id_dataset_id UNIQUE(dataset_id, project_id) , CONSTRAINT x_gds_dip_FK_approver_id FOREIGN KEY(approver_id) REFERENCES x_portal_user(id) ); CREATE INDEX x_gds_dip_guid ON x_gds_dataset_in_project(guid); CREATE INDEX x_gds_dip_dataset_id ON x_gds_dataset_in_project(dataset_id); CREATE INDEX x_gds_dip_project_id ON x_gds_dataset_in_project(project_id); commit; CREATE SEQUENCE x_gds_dataset_policy_map_seq; CREATE TABLE x_gds_dataset_policy_map( id BIGINT NOT NULL DEFAULT nextval('x_gds_dataset_policy_map_seq'::regclass) , dataset_id BIGINT NOT NULL , policy_id BIGINT NOT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_dpm_FK_dataset_id FOREIGN KEY(dataset_id) REFERENCES x_gds_dataset(id) , CONSTRAINT x_gds_dpm_FK_policy_id FOREIGN KEY(policy_id) REFERENCES x_policy(id) , CONSTRAINT x_gds_dpm_UK_dataset_id_policy_id UNIQUE(dataset_id, policy_id) ); CREATE INDEX x_gds_dpm_dataset_id ON x_gds_dataset_policy_map(dataset_id); CREATE INDEX x_gds_dpm_policy_id ON x_gds_dataset_policy_map(policy_id); commit; CREATE SEQUENCE x_gds_project_policy_map_seq; CREATE TABLE x_gds_project_policy_map( id BIGINT NOT NULL DEFAULT nextval('x_gds_project_policy_map_seq'::regclass) , project_id BIGINT NOT NULL , policy_id BIGINT NOT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_ppm_FK_project_id FOREIGN KEY(project_id) REFERENCES x_gds_project(id) , CONSTRAINT x_gds_ppm_FK_policy_id FOREIGN KEY(policy_id) REFERENCES x_policy(id) , CONSTRAINT x_gds_ppm_UK_project_id_policy_id UNIQUE(project_id, policy_id) ); CREATE INDEX x_gds_ppm_project_id ON x_gds_project_policy_map(project_id); CREATE INDEX x_gds_ppm_policy_id ON x_gds_project_policy_map(policy_id); commit;