From 6c299e6406ca9d5fd4115fcadc3827857b066d18 Mon Sep 17 00:00:00 2001
From: Cedric Caffy <cedric.caffy@cern.ch>
Date: Tue, 2 Feb 2021 15:10:34 +0100
Subject: [PATCH] [Catalogue] Schema v4.0: adapted the catalogue for the tape
 lifecycle management

- NOT NULL CONSTRAINT on TAPE_STATE
- NOT NULL CONSTRAINT on STATE_UPDATE_TIME
- NOT NULL CONSTRAINT on STATE_MODIFIED_BY
- Removed the columns TAPE.IS_DISABLED and TAPE.IS_READ_ONLY and their
  constraints
---
 catalogue/4.0/mysql_catalogue_schema.sql      | 11 ++---
 catalogue/4.0/oracle_catalogue_schema.sql     | 11 ++---
 catalogue/4.0/postgres_catalogue_schema.sql   | 11 ++---
 catalogue/4.0/sqlite_catalogue_schema.sql     | 11 ++---
 catalogue/AllCatalogueSchema.hpp              | 44 +++++-------------
 catalogue/common_catalogue_schema.sql         | 11 ++---
 .../migrations/liquibase/oracle/3.2to4.0.sql  | 45 +++++++++++++++++++
 7 files changed, 72 insertions(+), 72 deletions(-)

diff --git a/catalogue/4.0/mysql_catalogue_schema.sql b/catalogue/4.0/mysql_catalogue_schema.sql
index 8b2da66894..ab65dba9a4 100644
--- a/catalogue/4.0/mysql_catalogue_schema.sql
+++ b/catalogue/4.0/mysql_catalogue_schema.sql
@@ -182,9 +182,7 @@ CREATE TABLE TAPE(
   LAST_FSEQ               BIGINT UNSIGNED      CONSTRAINT TAPE_LF_NN   NOT NULL,
   NB_MASTER_FILES         BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,
   MASTER_DATA_IN_BYTES    BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,
-  IS_DISABLED             CHAR(1),
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
-  IS_READ_ONLY            CHAR(1),
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   NB_COPY_NB_1            BIGINT UNSIGNED     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,
@@ -200,10 +198,10 @@ CREATE TABLE TAPE(
   READ_MOUNT_COUNT        BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,
   WRITE_MOUNT_COUNT       BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,
   USER_COMMENT            VARCHAR(1000),
-  TAPE_STATE              VARCHAR(100),
+  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,
   STATE_REASON            VARCHAR(1000),
-  STATE_UPDATE_TIME       BIGINT UNSIGNED,
-  STATE_MODIFIED_BY       VARCHAR(100),
+  STATE_UPDATE_TIME       BIGINT UNSIGNED      CONSTRAINT TAPE_SUT_NN NOT NULL,
+  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,
   CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,
   CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,
   CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT TAPE_CLT_NN  NOT NULL,
@@ -213,16 +211,13 @@ CREATE TABLE TAPE(
   CONSTRAINT TAPE_PK PRIMARY KEY(VID),
   CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),
   CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),
-  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),
   CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),
-  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),
   CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),
   CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),
   CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),
   CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)
 );
 CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);
-CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);
 CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);
 CREATE TABLE MOUNT_POLICY(
   MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,
diff --git a/catalogue/4.0/oracle_catalogue_schema.sql b/catalogue/4.0/oracle_catalogue_schema.sql
index 62c5a89337..50858f8f7c 100644
--- a/catalogue/4.0/oracle_catalogue_schema.sql
+++ b/catalogue/4.0/oracle_catalogue_schema.sql
@@ -214,9 +214,7 @@ CREATE TABLE TAPE(
   LAST_FSEQ               NUMERIC(20, 0)      CONSTRAINT TAPE_LF_NN   NOT NULL,
   NB_MASTER_FILES         NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,
   MASTER_DATA_IN_BYTES    NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,
-  IS_DISABLED             CHAR(1),
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
-  IS_READ_ONLY            CHAR(1),
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   NB_COPY_NB_1            NUMERIC(20, 0)     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,
@@ -232,10 +230,10 @@ CREATE TABLE TAPE(
   READ_MOUNT_COUNT        NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,
   WRITE_MOUNT_COUNT       NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,
   USER_COMMENT            VARCHAR2(1000),
-  TAPE_STATE              VARCHAR2(100),
+  TAPE_STATE              VARCHAR2(100)    CONSTRAINT TAPE_TS_NN NOT NULL,
   STATE_REASON            VARCHAR2(1000),
-  STATE_UPDATE_TIME       NUMERIC(20, 0),
-  STATE_MODIFIED_BY       VARCHAR2(100),
+  STATE_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_SUT_NN NOT NULL,
+  STATE_MODIFIED_BY       VARCHAR2(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,
   CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,
   CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,
   CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_CLT_NN  NOT NULL,
@@ -245,16 +243,13 @@ CREATE TABLE TAPE(
   CONSTRAINT TAPE_PK PRIMARY KEY(VID),
   CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),
   CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),
-  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),
   CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),
-  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),
   CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),
   CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),
   CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),
   CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)
 );
 CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);
-CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);
 CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);
 CREATE TABLE MOUNT_POLICY(
   MOUNT_POLICY_NAME          VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,
diff --git a/catalogue/4.0/postgres_catalogue_schema.sql b/catalogue/4.0/postgres_catalogue_schema.sql
index 34aef0ddb9..52005ea7f1 100644
--- a/catalogue/4.0/postgres_catalogue_schema.sql
+++ b/catalogue/4.0/postgres_catalogue_schema.sql
@@ -196,9 +196,7 @@ CREATE TABLE TAPE(
   LAST_FSEQ               NUMERIC(20, 0)      CONSTRAINT TAPE_LF_NN   NOT NULL,
   NB_MASTER_FILES         NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,
   MASTER_DATA_IN_BYTES    NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,
-  IS_DISABLED             CHAR(1),
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
-  IS_READ_ONLY            CHAR(1),
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   NB_COPY_NB_1            NUMERIC(20, 0)     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,
@@ -214,10 +212,10 @@ CREATE TABLE TAPE(
   READ_MOUNT_COUNT        NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,
   WRITE_MOUNT_COUNT       NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,
   USER_COMMENT            VARCHAR(1000),
-  TAPE_STATE              VARCHAR(100),
+  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,
   STATE_REASON            VARCHAR(1000),
-  STATE_UPDATE_TIME       NUMERIC(20, 0),
-  STATE_MODIFIED_BY       VARCHAR(100),
+  STATE_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_SUT_NN NOT NULL,
+  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,
   CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,
   CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,
   CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_CLT_NN  NOT NULL,
@@ -227,16 +225,13 @@ CREATE TABLE TAPE(
   CONSTRAINT TAPE_PK PRIMARY KEY(VID),
   CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),
   CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),
-  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),
   CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),
-  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),
   CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),
   CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),
   CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),
   CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)
 );
 CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);
-CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);
 CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);
 CREATE TABLE MOUNT_POLICY(
   MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,
diff --git a/catalogue/4.0/sqlite_catalogue_schema.sql b/catalogue/4.0/sqlite_catalogue_schema.sql
index 72108060a3..90836286b3 100644
--- a/catalogue/4.0/sqlite_catalogue_schema.sql
+++ b/catalogue/4.0/sqlite_catalogue_schema.sql
@@ -168,9 +168,7 @@ CREATE TABLE TAPE(
   LAST_FSEQ               INTEGER      CONSTRAINT TAPE_LF_NN   NOT NULL,
   NB_MASTER_FILES         INTEGER      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,
   MASTER_DATA_IN_BYTES    INTEGER      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,
-  IS_DISABLED             CHAR(1),
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
-  IS_READ_ONLY            CHAR(1),
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   NB_COPY_NB_1            INTEGER     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,
@@ -186,10 +184,10 @@ CREATE TABLE TAPE(
   READ_MOUNT_COUNT        INTEGER      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,
   WRITE_MOUNT_COUNT       INTEGER      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,
   USER_COMMENT            VARCHAR(1000),
-  TAPE_STATE              VARCHAR(100),
+  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,
   STATE_REASON            VARCHAR(1000),
-  STATE_UPDATE_TIME       INTEGER,
-  STATE_MODIFIED_BY       VARCHAR(100),
+  STATE_UPDATE_TIME       INTEGER      CONSTRAINT TAPE_SUT_NN NOT NULL,
+  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,
   CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,
   CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,
   CREATION_LOG_TIME       INTEGER      CONSTRAINT TAPE_CLT_NN  NOT NULL,
@@ -199,16 +197,13 @@ CREATE TABLE TAPE(
   CONSTRAINT TAPE_PK PRIMARY KEY(VID),
   CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),
   CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),
-  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),
   CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),
-  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),
   CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),
   CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),
   CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),
   CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)
 );
 CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);
-CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);
 CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);
 CREATE TABLE MOUNT_POLICY(
   MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,
diff --git a/catalogue/AllCatalogueSchema.hpp b/catalogue/AllCatalogueSchema.hpp
index fd3d3aee8c..a6be294e81 100644
--- a/catalogue/AllCatalogueSchema.hpp
+++ b/catalogue/AllCatalogueSchema.hpp
@@ -8902,9 +8902,7 @@ namespace catalogue{
   "  LAST_FSEQ               NUMERIC(20, 0)      CONSTRAINT TAPE_LF_NN   NOT NULL,"
   "  NB_MASTER_FILES         NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,"
   "  MASTER_DATA_IN_BYTES    NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,"
-  "  IS_DISABLED             CHAR(1),"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
-  "  IS_READ_ONLY            CHAR(1),"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  NB_COPY_NB_1            NUMERIC(20, 0)     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,"
@@ -8920,10 +8918,10 @@ namespace catalogue{
   "  READ_MOUNT_COUNT        NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,"
   "  WRITE_MOUNT_COUNT       NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,"
   "  USER_COMMENT            VARCHAR2(1000),"
-  "  TAPE_STATE              VARCHAR2(100),"
+  "  TAPE_STATE              VARCHAR2(100)    CONSTRAINT TAPE_TS_NN NOT NULL,"
   "  STATE_REASON            VARCHAR2(1000),"
-  "  STATE_UPDATE_TIME       NUMERIC(20, 0),"
-  "  STATE_MODIFIED_BY       VARCHAR2(100),"
+  "  STATE_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_SUT_NN NOT NULL,"
+  "  STATE_MODIFIED_BY       VARCHAR2(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,"
   "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,"
   "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,"
   "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_CLT_NN  NOT NULL,"
@@ -8933,16 +8931,13 @@ namespace catalogue{
   "  CONSTRAINT TAPE_PK PRIMARY KEY(VID),"
   "  CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),"
   "  CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
-  "  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),"
-  "  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),"
   "  CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),"
   "  CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),"
   "  CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)"
   ");"
   "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
-  "CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);"
   "CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);"
   "CREATE TABLE MOUNT_POLICY("
   "  MOUNT_POLICY_NAME          VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
@@ -9265,9 +9260,7 @@ namespace catalogue{
   "  LAST_FSEQ               BIGINT UNSIGNED      CONSTRAINT TAPE_LF_NN   NOT NULL,"
   "  NB_MASTER_FILES         BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,"
   "  MASTER_DATA_IN_BYTES    BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,"
-  "  IS_DISABLED             CHAR(1),"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
-  "  IS_READ_ONLY            CHAR(1),"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  NB_COPY_NB_1            BIGINT UNSIGNED     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,"
@@ -9283,10 +9276,10 @@ namespace catalogue{
   "  READ_MOUNT_COUNT        BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,"
   "  WRITE_MOUNT_COUNT       BIGINT UNSIGNED      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,"
   "  USER_COMMENT            VARCHAR(1000),"
-  "  TAPE_STATE              VARCHAR(100),"
+  "  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,"
   "  STATE_REASON            VARCHAR(1000),"
-  "  STATE_UPDATE_TIME       BIGINT UNSIGNED,"
-  "  STATE_MODIFIED_BY       VARCHAR(100),"
+  "  STATE_UPDATE_TIME       BIGINT UNSIGNED      CONSTRAINT TAPE_SUT_NN NOT NULL,"
+  "  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,"
   "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,"
   "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,"
   "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT TAPE_CLT_NN  NOT NULL,"
@@ -9296,16 +9289,13 @@ namespace catalogue{
   "  CONSTRAINT TAPE_PK PRIMARY KEY(VID),"
   "  CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),"
   "  CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
-  "  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),"
-  "  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),"
   "  CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),"
   "  CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),"
   "  CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)"
   ");"
   "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
-  "CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);"
   "CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);"
   "CREATE TABLE MOUNT_POLICY("
   "  MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
@@ -9613,9 +9603,7 @@ namespace catalogue{
   "  LAST_FSEQ               INTEGER      CONSTRAINT TAPE_LF_NN   NOT NULL,"
   "  NB_MASTER_FILES         INTEGER      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,"
   "  MASTER_DATA_IN_BYTES    INTEGER      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,"
-  "  IS_DISABLED             CHAR(1),"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
-  "  IS_READ_ONLY            CHAR(1),"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  NB_COPY_NB_1            INTEGER     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,"
@@ -9631,10 +9619,10 @@ namespace catalogue{
   "  READ_MOUNT_COUNT        INTEGER      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,"
   "  WRITE_MOUNT_COUNT       INTEGER      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,"
   "  USER_COMMENT            VARCHAR(1000),"
-  "  TAPE_STATE              VARCHAR(100),"
+  "  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,"
   "  STATE_REASON            VARCHAR(1000),"
-  "  STATE_UPDATE_TIME       INTEGER,"
-  "  STATE_MODIFIED_BY       VARCHAR(100),"
+  "  STATE_UPDATE_TIME       INTEGER      CONSTRAINT TAPE_SUT_NN NOT NULL,"
+  "  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,"
   "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,"
   "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,"
   "  CREATION_LOG_TIME       INTEGER      CONSTRAINT TAPE_CLT_NN  NOT NULL,"
@@ -9644,16 +9632,13 @@ namespace catalogue{
   "  CONSTRAINT TAPE_PK PRIMARY KEY(VID),"
   "  CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),"
   "  CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
-  "  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),"
-  "  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),"
   "  CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),"
   "  CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),"
   "  CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)"
   ");"
   "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
-  "CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);"
   "CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);"
   "CREATE TABLE MOUNT_POLICY("
   "  MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
@@ -9987,9 +9972,7 @@ namespace catalogue{
   "  LAST_FSEQ               NUMERIC(20, 0)      CONSTRAINT TAPE_LF_NN   NOT NULL,"
   "  NB_MASTER_FILES         NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,"
   "  MASTER_DATA_IN_BYTES    NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,"
-  "  IS_DISABLED             CHAR(1),"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
-  "  IS_READ_ONLY            CHAR(1),"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  NB_COPY_NB_1            NUMERIC(20, 0)     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,"
@@ -10005,10 +9988,10 @@ namespace catalogue{
   "  READ_MOUNT_COUNT        NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,"
   "  WRITE_MOUNT_COUNT       NUMERIC(20, 0)      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,"
   "  USER_COMMENT            VARCHAR(1000),"
-  "  TAPE_STATE              VARCHAR(100),"
+  "  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,"
   "  STATE_REASON            VARCHAR(1000),"
-  "  STATE_UPDATE_TIME       NUMERIC(20, 0),"
-  "  STATE_MODIFIED_BY       VARCHAR(100),"
+  "  STATE_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_SUT_NN NOT NULL,"
+  "  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,"
   "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,"
   "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,"
   "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_CLT_NN  NOT NULL,"
@@ -10018,16 +10001,13 @@ namespace catalogue{
   "  CONSTRAINT TAPE_PK PRIMARY KEY(VID),"
   "  CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),"
   "  CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
-  "  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),"
-  "  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),"
   "  CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),"
   "  CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),"
   "  CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),"
   "  CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)"
   ");"
   "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
-  "CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);"
   "CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);"
   "CREATE TABLE MOUNT_POLICY("
   "  MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql
index bc6d76e03c..96d639e476 100644
--- a/catalogue/common_catalogue_schema.sql
+++ b/catalogue/common_catalogue_schema.sql
@@ -147,9 +147,7 @@ CREATE TABLE TAPE(
   LAST_FSEQ               UINT64TYPE      CONSTRAINT TAPE_LF_NN   NOT NULL,
   NB_MASTER_FILES         UINT64TYPE      DEFAULT 0 CONSTRAINT TAPE_NB_MASTER_FILES_NN NOT NULL,
   MASTER_DATA_IN_BYTES    UINT64TYPE      DEFAULT 0 CONSTRAINT TAPE_MASTER_DATA_IN_BYTES_NN NOT NULL,
-  IS_DISABLED             CHAR(1),
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
-  IS_READ_ONLY            CHAR(1),
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   NB_COPY_NB_1            UINT64TYPE     DEFAULT 0 CONSTRAINT TAPE_NB_COPY_NB_1_NN NOT NULL,
@@ -165,10 +163,10 @@ CREATE TABLE TAPE(
   READ_MOUNT_COUNT        UINT64TYPE      DEFAULT 0 CONSTRAINT TAPE_RMC_NN NOT NULL,
   WRITE_MOUNT_COUNT       UINT64TYPE      DEFAULT 0 CONSTRAINT TAPE_WMC_NN NOT NULL,
   USER_COMMENT            VARCHAR(1000),
-  TAPE_STATE              VARCHAR(100),
+  TAPE_STATE              VARCHAR(100)    CONSTRAINT TAPE_TS_NN NOT NULL,
   STATE_REASON            VARCHAR(1000),
-  STATE_UPDATE_TIME       UINT64TYPE,
-  STATE_MODIFIED_BY       VARCHAR(100),
+  STATE_UPDATE_TIME       UINT64TYPE      CONSTRAINT TAPE_SUT_NN NOT NULL,
+  STATE_MODIFIED_BY       VARCHAR(100)    CONSTRAINT TAPE_SMB_NN NOT NULL,
   CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLUN_NN NOT NULL,
   CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_CLHN_NN NOT NULL,
   CREATION_LOG_TIME       UINT64TYPE      CONSTRAINT TAPE_CLT_NN  NOT NULL,
@@ -178,16 +176,13 @@ CREATE TABLE TAPE(
   CONSTRAINT TAPE_PK PRIMARY KEY(VID),
   CONSTRAINT TAPE_LOGICAL_LIBRARY_FK FOREIGN KEY(LOGICAL_LIBRARY_ID) REFERENCES LOGICAL_LIBRARY(LOGICAL_LIBRARY_ID),
   CONSTRAINT TAPE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),
-  CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1')),
   CONSTRAINT TAPE_IS_FULL_BOOL_CK CHECK(IS_FULL IN ('0', '1')),
-  CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK CHECK(IS_READ_ONLY IN ('0', '1')),
   CONSTRAINT TAPE_IS_FROM_CASTOR_BOOL_CK CHECK(IS_FROM_CASTOR IN ('0', '1')),
   CONSTRAINT TAPE_DIRTY_BOOL_CK CHECK(DIRTY IN ('0','1')),
   CONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN')),
   CONSTRAINT TAPE_MEDIA_TYPE_FK FOREIGN KEY(MEDIA_TYPE_ID) REFERENCES MEDIA_TYPE(MEDIA_TYPE_ID)
 );
 CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);
-CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);
 CREATE INDEX TAPE_STATE_IDX ON TAPE(TAPE_STATE);
 CREATE TABLE MOUNT_POLICY(
   MOUNT_POLICY_NAME          VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,
diff --git a/catalogue/migrations/liquibase/oracle/3.2to4.0.sql b/catalogue/migrations/liquibase/oracle/3.2to4.0.sql
index 2c884ade1e..0c5f044e59 100644
--- a/catalogue/migrations/liquibase/oracle/3.2to4.0.sql
+++ b/catalogue/migrations/liquibase/oracle/3.2to4.0.sql
@@ -109,6 +109,51 @@ DROP TABLE ARCHIVE_FILE_RECYCLE_BIN;
 --changeset ccaffy:7 failOnError:true dbms:oracle
 --preconditions onFail:HALT onError:HALT
 --precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE MODIFY TAPE_STATE VARCHAR2(100) CONSTRAINT TAPE_TS_NN NOT NULL;
+--rollback ALTER TABLE TAPE DROP CONSTRAINT TAPE_TS_NN;
+
+--changeset ccaffy:8 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE MODIFY STATE_UPDATE_TIME NUMERIC(20,0) CONSTRAINT TAPE_SUT_NN NOT NULL;
+--rollback ALTER TABLE TAPE DROP CONSTRAINT TAPE_SUT_NN;
+
+--changeset ccaffy:9 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE MODIFY STATE_MODIFIED_BY VARCHAR2(100) CONSTRAINT TAPE_SMB_NN NOT NULL;
+--rollback ALTER TABLE TAPE DROP CONSTRAINT TAPE_SMB_NN;
+
+--changeset ccaffy:10 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE DROP CONSTRAINT TAPE_IS_DISABLED_BOOL_CK;
+--rollback ALTER TABLE TAPE ADD CONSTRAINT TAPE_IS_DISABLED_BOOL_CK CHECK(IS_DISABLED IN ('0', '1'));
+
+--changeset ccaffy:11 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+DROP INDEX TAPE_IS_DISABLED_IDX;
+--rollback CREATE INDEX TAPE_IS_DISABLED_IDX ON TAPE(IS_DISABLED);
+
+--changeset ccaffy:12 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE DROP COLUMN IS_DISABLED;
+
+--changeset ccaffy:13 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE DROP CONSTRAINT TAPE_IS_READ_ONLY_BOOL_CK;
+
+--changeset ccaffy:14 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
+ALTER TABLE TAPE DROP COLUMN IS_READ_ONLY;
+
+--changeset ccaffy:15 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"3.2" SELECT CONCAT(CONCAT(CAST(SCHEMA_VERSION_MAJOR as VARCHAR(10)),'.'), CAST(SCHEMA_VERSION_MINOR AS VARCHAR(10))) AS CATALOGUE_VERSION FROM CTA_CATALOGUE;
 UPDATE CTA_CATALOGUE SET STATUS='PRODUCTION';
 UPDATE CTA_CATALOGUE SET SCHEMA_VERSION_MAJOR=4;
 UPDATE CTA_CATALOGUE SET SCHEMA_VERSION_MINOR=0;
-- 
GitLab