From 6b8e89a4a2a948623014ac3673472625311af36e Mon Sep 17 00:00:00 2001 From: Steven Murray <Steven.Murray@cern.ch> Date: Wed, 27 Nov 2019 11:47:23 +0100 Subject: [PATCH] Added IS_DELETED column to the ARCHIVE_FILE table --- catalogue/PostgresCatalogue.cpp | 1 + catalogue/common_catalogue_schema.sql | 4 +++- catalogue/mysql_catalogue_schema_trigger.sql | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/catalogue/PostgresCatalogue.cpp b/catalogue/PostgresCatalogue.cpp index 921b2d265a..a1230d0e5d 100644 --- a/catalogue/PostgresCatalogue.cpp +++ b/catalogue/PostgresCatalogue.cpp @@ -850,6 +850,7 @@ void PostgresCatalogue::beginCreateTemporarySetDeferred(rdbms::Conn &conn) const conn.executeNonQuery("CREATE TEMPORARY TABLE TEMP_ARCHIVE_FILE_BATCH (LIKE ARCHIVE_FILE) ON COMMIT DROP"); conn.executeNonQuery("ALTER TABLE TEMP_ARCHIVE_FILE_BATCH ADD COLUMN STORAGE_CLASS_NAME VARCHAR(100)"); conn.executeNonQuery("ALTER TABLE TEMP_ARCHIVE_FILE_BATCH ALTER COLUMN STORAGE_CLASS_ID DROP NOT NULL"); + conn.executeNonQuery("ALTER TABLE TEMP_ARCHIVE_FILE_BATCH ALTER COLUMN IS_DELETED DROP NOT NULL"); conn.executeNonQuery("CREATE INDEX TEMP_A_F_B_ARCHIVE_FILE_ID_I ON TEMP_ARCHIVE_FILE_BATCH(ARCHIVE_FILE_ID)"); conn.executeNonQuery("CREATE INDEX TEMP_A_F_B_DIN_SCN_I ON TEMP_ARCHIVE_FILE_BATCH(DISK_INSTANCE_NAME, STORAGE_CLASS_NAME)"); conn.executeNonQuery("CREATE TEMPORARY TABLE TEMP_TAPE_FILE_BATCH(ARCHIVE_FILE_ID NUMERIC(20,0)) ON COMMIT DROP"); diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql index 62a667d007..17284077ca 100644 --- a/catalogue/common_catalogue_schema.sql +++ b/catalogue/common_catalogue_schema.sql @@ -193,9 +193,11 @@ CREATE TABLE ARCHIVE_FILE( STORAGE_CLASS_ID UINT64TYPE CONSTRAINT ARCHIVE_FILE_SCI_NN NOT NULL, CREATION_TIME UINT64TYPE CONSTRAINT ARCHIVE_FILE_CT2_NN NOT NULL, RECONCILIATION_TIME UINT64TYPE CONSTRAINT ARCHIVE_FILE_RT_NN NOT NULL, + IS_DELETED CHAR(1) DEFAULT '0' CONSTRAINT ARCHIVE_FILE_ID_NN NOT NULL, CONSTRAINT ARCHIVE_FILE_PK PRIMARY KEY(ARCHIVE_FILE_ID), CONSTRAINT ARCHIVE_FILE_STORAGE_CLASS_FK FOREIGN KEY(STORAGE_CLASS_ID) REFERENCES STORAGE_CLASS(STORAGE_CLASS_ID), - CONSTRAINT ARCHIVE_FILE_DIN_DFI_UN UNIQUE(DISK_INSTANCE_NAME, DISK_FILE_ID) + CONSTRAINT ARCHIVE_FILE_DIN_DFI_UN UNIQUE(DISK_INSTANCE_NAME, DISK_FILE_ID), + CONSTRAINT ARCHIVE_FILE_ID_BOOL_CK CHECK(IS_DELETED IN ('0', '1')) ); CREATE INDEX ARCHIVE_FILE_DIN_DFP_IDX ON ARCHIVE_FILE(DISK_INSTANCE_NAME, DISK_FILE_PATH); CREATE TABLE TAPE_FILE( diff --git a/catalogue/mysql_catalogue_schema_trigger.sql b/catalogue/mysql_catalogue_schema_trigger.sql index 4a4fff126b..14b090fb8f 100644 --- a/catalogue/mysql_catalogue_schema_trigger.sql +++ b/catalogue/mysql_catalogue_schema_trigger.sql @@ -119,3 +119,21 @@ CREATE TRIGGER `CHECK_LOGICAL_LIBRARY_BEFORE_UPDATE` BEFORE UPDATE ON `LOGICAL_L SET MESSAGE_TEXT = 'LOGICAL_LIBRARY.IS_DISABLED should be 0 or 1'; END IF; END; + +CREATE TRIGGER `CHECK_ARCHIVE_FILE_BEFORE_INSERT` BEFORE INSERT ON `ARCHIVE_FILE` + FOR EACH ROW + BEGIN + IF new.IS_DELETED not in ('0','1') THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'ARCHIVE_FILE.IS_DELETED should be 0 or 1'; + END IF; + END; + +CREATE TRIGGER `CHECK_ARCHIVE_FILE_BEFORE_UPDATE` BEFORE UPDATE ON `ARCHIVE_FILE` + FOR EACH ROW + BEGIN + IF new.IS_DELETED not in ('0','1') THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'ARCHIVE_FILE.IS_DELETED should be 0 or 1'; + END IF; + END; -- GitLab