From e9cad94a952d29326ae46529a87ba268547992ba Mon Sep 17 00:00:00 2001
From: Cedric CAFFY <cedric.caffy@cern.ch>
Date: Thu, 30 Jan 2020 11:55:50 +0100
Subject: [PATCH] Added NB_MASTER_FILES, MASTER_DATA_IN_BYTES and DIRTY column
 to the TAPE table Replaced CTA_CATALOGUE 'COMPLETE' STATUS to 'PRODUCTION'

---
 catalogue/1.1/mysql_catalogue_schema.sql      |  7 +++--
 catalogue/1.1/oracle_catalogue_schema.sql     |  7 +++--
 catalogue/1.1/postgres_catalogue_schema.sql   |  7 +++--
 catalogue/1.1/sqlite_catalogue_schema.sql     |  5 +++-
 catalogue/AllCatalogueSchema.hpp              | 26 ++++++++++++++-----
 catalogue/Catalogue.hpp                       |  2 +-
 catalogue/CatalogueMetadataGetter.cpp         |  4 +--
 catalogue/RdbmsCatalogue.hpp                  |  2 +-
 catalogue/SchemaVersion.cpp                   |  8 +++---
 catalogue/SchemaVersion.hpp                   |  2 +-
 catalogue/common_catalogue_schema.sql         |  3 +++
 catalogue/insert_cta_catalogue_version.sql.in |  2 +-
 .../migrations/liquibase/oracle/1.0to1.1.sql  | 23 ++++++++++++----
 catalogue/mysql_catalogue_schema_trailer.sql  |  2 +-
 catalogue/oracle_catalogue_schema_trailer.sql |  2 +-
 .../postgres_catalogue_schema_trailer.sql     |  2 +-
 16 files changed, 72 insertions(+), 32 deletions(-)

diff --git a/catalogue/1.1/mysql_catalogue_schema.sql b/catalogue/1.1/mysql_catalogue_schema.sql
index 6e349a23a7..3d7ca86a10 100644
--- a/catalogue/1.1/mysql_catalogue_schema.sql
+++ b/catalogue/1.1/mysql_catalogue_schema.sql
@@ -128,12 +128,15 @@ CREATE TABLE TAPE(
   CAPACITY_IN_BYTES       BIGINT UNSIGNED      CONSTRAINT TAPE_CIB_NN  NOT NULL,
   DATA_IN_BYTES           BIGINT UNSIGNED      CONSTRAINT TAPE_DIB_NN  NOT NULL,
   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)         CONSTRAINT TAPE_ID_NN   NOT NULL,
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
   IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,
   IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,
+  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   LABEL_DRIVE             VARCHAR(100),
   LABEL_TIME              BIGINT UNSIGNED    ,
   LAST_READ_DRIVE         VARCHAR(100),
@@ -294,6 +297,6 @@ INSERT INTO CTA_CATALOGUE(
 VALUES(
   1,
   1,
-  'COMPLETE');
+  'PRODUCTION');
 ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT 
-  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (STATUS='UPGRADING'));
\ No newline at end of file
+  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (STATUS='UPGRADING'));
\ No newline at end of file
diff --git a/catalogue/1.1/oracle_catalogue_schema.sql b/catalogue/1.1/oracle_catalogue_schema.sql
index d4fad39fe9..ae093d3958 100644
--- a/catalogue/1.1/oracle_catalogue_schema.sql
+++ b/catalogue/1.1/oracle_catalogue_schema.sql
@@ -150,12 +150,15 @@ CREATE TABLE TAPE(
   CAPACITY_IN_BYTES       NUMERIC(20, 0)      CONSTRAINT TAPE_CIB_NN  NOT NULL,
   DATA_IN_BYTES           NUMERIC(20, 0)      CONSTRAINT TAPE_DIB_NN  NOT NULL,
   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)         CONSTRAINT TAPE_ID_NN   NOT NULL,
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
   IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,
   IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,
+  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   LABEL_DRIVE             VARCHAR2(100),
   LABEL_TIME              NUMERIC(20, 0)    ,
   LAST_READ_DRIVE         VARCHAR2(100),
@@ -316,7 +319,7 @@ INSERT INTO CTA_CATALOGUE(
 VALUES(
   1,
   1,
-  'COMPLETE');
-ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;
+  'PRODUCTION');
+ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;
 
 COMMIT;
diff --git a/catalogue/1.1/postgres_catalogue_schema.sql b/catalogue/1.1/postgres_catalogue_schema.sql
index 8afaa5ed84..b3d02e65ce 100644
--- a/catalogue/1.1/postgres_catalogue_schema.sql
+++ b/catalogue/1.1/postgres_catalogue_schema.sql
@@ -135,12 +135,15 @@ CREATE TABLE TAPE(
   CAPACITY_IN_BYTES       NUMERIC(20, 0)      CONSTRAINT TAPE_CIB_NN  NOT NULL,
   DATA_IN_BYTES           NUMERIC(20, 0)      CONSTRAINT TAPE_DIB_NN  NOT NULL,
   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)         CONSTRAINT TAPE_ID_NN   NOT NULL,
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
   IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,
   IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,
+  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   LABEL_DRIVE             VARCHAR(100),
   LABEL_TIME              NUMERIC(20, 0)    ,
   LAST_READ_DRIVE         VARCHAR(100),
@@ -301,10 +304,10 @@ INSERT INTO CTA_CATALOGUE(
 VALUES(
   1,
   1,
-  'COMPLETE');
+  'PRODUCTION');
 ALTER TABLE ARCHIVE_FILE DROP CONSTRAINT
   ARCHIVE_FILE_DIN_DFI_UN;
 ALTER TABLE ARCHIVE_FILE ADD CONSTRAINT
   ARCHIVE_FILE_DIN_DFI_UN UNIQUE(DISK_INSTANCE_NAME, DISK_FILE_ID) DEFERRABLE INITIALLY IMMEDIATE;
 ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT 
-  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (STATUS='UPGRADING'));
+  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (STATUS='UPGRADING'));
diff --git a/catalogue/1.1/sqlite_catalogue_schema.sql b/catalogue/1.1/sqlite_catalogue_schema.sql
index c6de928232..638bbc4db7 100644
--- a/catalogue/1.1/sqlite_catalogue_schema.sql
+++ b/catalogue/1.1/sqlite_catalogue_schema.sql
@@ -119,12 +119,15 @@ CREATE TABLE TAPE(
   CAPACITY_IN_BYTES       INTEGER      CONSTRAINT TAPE_CIB_NN  NOT NULL,
   DATA_IN_BYTES           INTEGER      CONSTRAINT TAPE_DIB_NN  NOT NULL,
   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)         CONSTRAINT TAPE_ID_NN   NOT NULL,
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
   IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,
   IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,
+  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   LABEL_DRIVE             VARCHAR(100),
   LABEL_TIME              INTEGER    ,
   LAST_READ_DRIVE         VARCHAR(100),
@@ -285,4 +288,4 @@ INSERT INTO CTA_CATALOGUE(
 VALUES(
   1,
   1,
-  'COMPLETE');
+  'PRODUCTION');
diff --git a/catalogue/AllCatalogueSchema.hpp b/catalogue/AllCatalogueSchema.hpp
index 8e02355016..2254a20ecf 100644
--- a/catalogue/AllCatalogueSchema.hpp
+++ b/catalogue/AllCatalogueSchema.hpp
@@ -1376,12 +1376,15 @@ namespace catalogue{
   "  CAPACITY_IN_BYTES       NUMERIC(20, 0)      CONSTRAINT TAPE_CIB_NN  NOT NULL,"
   "  DATA_IN_BYTES           NUMERIC(20, 0)      CONSTRAINT TAPE_DIB_NN  NOT NULL,"
   "  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)         CONSTRAINT TAPE_ID_NN   NOT NULL,"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
   "  IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,"
   "  IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,"
+  "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  LABEL_DRIVE             VARCHAR2(100),"
   "  LABEL_TIME              NUMERIC(20, 0)    ,"
   "  LAST_READ_DRIVE         VARCHAR2(100),"
@@ -1542,8 +1545,8 @@ namespace catalogue{
   "VALUES("
   "  1,"
   "  1,"
-  "  'COMPLETE');"
-  "ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;"
+  "  'PRODUCTION');"
+  "ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;"
   ""
   "COMMIT;"
       },
@@ -1677,12 +1680,15 @@ namespace catalogue{
   "  CAPACITY_IN_BYTES       BIGINT UNSIGNED      CONSTRAINT TAPE_CIB_NN  NOT NULL,"
   "  DATA_IN_BYTES           BIGINT UNSIGNED      CONSTRAINT TAPE_DIB_NN  NOT NULL,"
   "  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)         CONSTRAINT TAPE_ID_NN   NOT NULL,"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
   "  IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,"
   "  IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,"
+  "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  LABEL_DRIVE             VARCHAR(100),"
   "  LABEL_TIME              BIGINT UNSIGNED    ,"
   "  LAST_READ_DRIVE         VARCHAR(100),"
@@ -1843,9 +1849,9 @@ namespace catalogue{
   "VALUES("
   "  1,"
   "  1,"
-  "  'COMPLETE');"
+  "  'PRODUCTION');"
   "ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT "
-  "  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (STATUS='UPGRADING'));"
+  "  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (STATUS='UPGRADING'));"
       },
   {"sqlite",  "CREATE TABLE ARCHIVE_FILE_ID("
   "  ID INTEGER PRIMARY KEY AUTOINCREMENT"
@@ -1968,12 +1974,15 @@ namespace catalogue{
   "  CAPACITY_IN_BYTES       INTEGER      CONSTRAINT TAPE_CIB_NN  NOT NULL,"
   "  DATA_IN_BYTES           INTEGER      CONSTRAINT TAPE_DIB_NN  NOT NULL,"
   "  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)         CONSTRAINT TAPE_ID_NN   NOT NULL,"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
   "  IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,"
   "  IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,"
+  "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  LABEL_DRIVE             VARCHAR(100),"
   "  LABEL_TIME              INTEGER    ,"
   "  LAST_READ_DRIVE         VARCHAR(100),"
@@ -2134,7 +2143,7 @@ namespace catalogue{
   "VALUES("
   "  1,"
   "  1,"
-  "  'COMPLETE');"
+  "  'PRODUCTION');"
       },
   {"postgres",  "CREATE SEQUENCE ARCHIVE_FILE_ID_SEQ"
   "  INCREMENT BY 1"
@@ -2273,12 +2282,15 @@ namespace catalogue{
   "  CAPACITY_IN_BYTES       NUMERIC(20, 0)      CONSTRAINT TAPE_CIB_NN  NOT NULL,"
   "  DATA_IN_BYTES           NUMERIC(20, 0)      CONSTRAINT TAPE_DIB_NN  NOT NULL,"
   "  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)         CONSTRAINT TAPE_ID_NN   NOT NULL,"
   "  IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,"
   "  IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,"
   "  IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,"
   "  IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,"
   "  IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,"
+  "  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,"
   "  LABEL_DRIVE             VARCHAR(100),"
   "  LABEL_TIME              NUMERIC(20, 0)    ,"
   "  LAST_READ_DRIVE         VARCHAR(100),"
@@ -2439,13 +2451,13 @@ namespace catalogue{
   "VALUES("
   "  1,"
   "  1,"
-  "  'COMPLETE');"
+  "  'PRODUCTION');"
   "ALTER TABLE ARCHIVE_FILE DROP CONSTRAINT"
   "  ARCHIVE_FILE_DIN_DFI_UN;"
   "ALTER TABLE ARCHIVE_FILE ADD CONSTRAINT"
   "  ARCHIVE_FILE_DIN_DFI_UN UNIQUE(DISK_INSTANCE_NAME, DISK_FILE_ID) DEFERRABLE INITIALLY IMMEDIATE;"
   "ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT "
-  "  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (STATUS='UPGRADING'));"
+  "  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (STATUS='UPGRADING'));"
       },
     }  },
 };
diff --git a/catalogue/Catalogue.hpp b/catalogue/Catalogue.hpp
index d2c7d17d18..e55440a333 100644
--- a/catalogue/Catalogue.hpp
+++ b/catalogue/Catalogue.hpp
@@ -753,7 +753,7 @@ public:
    * - SCHEMA_VERSION_MINOR
    * - SCHEMA_VERSION_MAJOR_NEXT (future major version number of the schema in case of upgrade)
    * - SCHEMA_VERSION_MINOR_NEXT (future minor version number of the schema in case of upgrade)
-   * - STATUS (UPGRADING or COMPLETE)	
+   * - STATUS (UPGRADING or PRODUCTION)	
    * 
    * @return The SchemaVersion object corresponding to the catalogue schema version
    */
diff --git a/catalogue/CatalogueMetadataGetter.cpp b/catalogue/CatalogueMetadataGetter.cpp
index 53f0f1cc50..6c4cd9dc2a 100644
--- a/catalogue/CatalogueMetadataGetter.cpp
+++ b/catalogue/CatalogueMetadataGetter.cpp
@@ -70,8 +70,8 @@ SchemaVersion CatalogueMetadataGetter::getCatalogueVersion(){
     SchemaVersion::Builder schemaVersionBuilder;
     schemaVersionBuilder.schemaVersionMajor(rset.columnUint64("SCHEMA_VERSION_MAJOR"))
                         .schemaVersionMinor(rset.columnUint64("SCHEMA_VERSION_MINOR"))
-                        //By default, the status is set as COMPLETE (to be backward-compatible with version 1.0 of the schema)
-                        .status(SchemaVersion::Status::COMPLETE);
+                        //By default, the status is set as PRODUCTION (to be backward-compatible with version 1.0 of the schema)
+                        .status(SchemaVersion::Status::PRODUCTION);
 
     //The cta-catalogue-schema-verify tool has to be backward-compatible with version 1.0
     //of the schema that does not have the NEXT_SCHEMA_VERSION_MAJOR, NEXT_SCHEMA_VERSION_MINOR and the STATUS column
diff --git a/catalogue/RdbmsCatalogue.hpp b/catalogue/RdbmsCatalogue.hpp
index 948b43eb17..cd4863683d 100644
--- a/catalogue/RdbmsCatalogue.hpp
+++ b/catalogue/RdbmsCatalogue.hpp
@@ -757,7 +757,7 @@ public:
    * - SCHEMA_VERSION_MINOR
    * - SCHEMA_VERSION_MAJOR_NEXT (future major version number of the schema in case of upgrade)
    * - SCHEMA_VERSION_MINOR_NEXT (future minor version number of the schema in case of upgrade)
-   * - STATUS (UPGRADING or COMPLETE)	
+   * - STATUS (UPGRADING or PRODUCTION)	
    * 
    * @return The SchemaVersion object corresponding to the catalogue schema version
    */
diff --git a/catalogue/SchemaVersion.cpp b/catalogue/SchemaVersion.cpp
index ab4e65c79b..a4eca8333e 100644
--- a/catalogue/SchemaVersion.cpp
+++ b/catalogue/SchemaVersion.cpp
@@ -79,8 +79,8 @@ SchemaVersion::MajorMinor SchemaVersion::getSchemaVersionNext() const {
 template<>
 std::string SchemaVersion::getStatus() const {
   switch(m_status){
-    case COMPLETE:
-      return "COMPLETE";
+    case PRODUCTION:
+      return "PRODUCTION";
     case UPGRADING:
       return "UPGRADING";
     default:
@@ -147,7 +147,7 @@ SchemaVersion::Builder& SchemaVersion::Builder::status(const SchemaVersion::Stat
 }
 
 std::map<std::string,SchemaVersion::Status> SchemaVersion::Builder::s_mapStringStatus {
-  {"COMPLETE",Status::COMPLETE},
+  {"PRODUCTION",Status::PRODUCTION},
   {"UPGRADING",Status::UPGRADING}
 };
 
@@ -155,7 +155,7 @@ void SchemaVersion::Builder::validate() const {
   if(!m_schemaVersionMajorSet || !m_schemaVersionMinorSet){
     throw cta::exception::Exception("In SchemaVersion::Builder::validate(), schemaVersionMajor or schemaVersionMinor have not been set.");
   }
-  if(m_schemaVersion.m_nextSchemaVersionMajor && m_schemaVersion.m_nextSchemaVersionMinor && m_schemaVersion.m_status == SchemaVersion::Status::COMPLETE){
+  if(m_schemaVersion.m_nextSchemaVersionMajor && m_schemaVersion.m_nextSchemaVersionMinor && m_schemaVersion.m_status == SchemaVersion::Status::PRODUCTION){
     throw cta::exception::Exception("In SchemaVersion::Builder::validate(), status is "+m_schemaVersion.getStatus<std::string>()+" but nextSchemaVersionMajor and nextSchemaVersionMinor are defined");
   }
   if(!m_schemaVersion.m_nextSchemaVersionMajor && !m_schemaVersion.m_nextSchemaVersionMinor && m_schemaVersion.m_status == SchemaVersion::Status::UPGRADING){
diff --git a/catalogue/SchemaVersion.hpp b/catalogue/SchemaVersion.hpp
index 7884515a84..6536a3f110 100644
--- a/catalogue/SchemaVersion.hpp
+++ b/catalogue/SchemaVersion.hpp
@@ -33,7 +33,7 @@ public:
   
   enum Status{
     UPGRADING,
-    COMPLETE
+    PRODUCTION
   };
   
   SchemaVersion(const SchemaVersion& orig);
diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql
index 838f4efdee..63fedd4f31 100644
--- a/catalogue/common_catalogue_schema.sql
+++ b/catalogue/common_catalogue_schema.sql
@@ -107,12 +107,15 @@ CREATE TABLE TAPE(
   CAPACITY_IN_BYTES       UINT64TYPE      CONSTRAINT TAPE_CIB_NN  NOT NULL,
   DATA_IN_BYTES           UINT64TYPE      CONSTRAINT TAPE_DIB_NN  NOT NULL,
   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)         CONSTRAINT TAPE_ID_NN   NOT NULL,
   IS_FULL                 CHAR(1)         CONSTRAINT TAPE_IF_NN   NOT NULL,
   IS_READ_ONLY            CHAR(1)         CONSTRAINT TAPE_IRO_NN  NOT NULL,
   IS_FROM_CASTOR          CHAR(1)         CONSTRAINT TAPE_IFC_NN  NOT NULL,
   IS_ARCHIVED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IA_NN   NOT NULL,
   IS_EXPORTED             CHAR(1)         DEFAULT '0' CONSTRAINT TAPE_IE_NN   NOT NULL,
+  DIRTY                   CHAR(1)         DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL,
   LABEL_DRIVE             VARCHAR(100),
   LABEL_TIME              UINT64TYPE    ,
   LAST_READ_DRIVE         VARCHAR(100),
diff --git a/catalogue/insert_cta_catalogue_version.sql.in b/catalogue/insert_cta_catalogue_version.sql.in
index 644a112b42..011d5bf7b0 100644
--- a/catalogue/insert_cta_catalogue_version.sql.in
+++ b/catalogue/insert_cta_catalogue_version.sql.in
@@ -5,4 +5,4 @@ INSERT INTO CTA_CATALOGUE(
 VALUES(
   @CTA_CATALOGUE_SCHEMA_VERSION_MAJOR@,
   @CTA_CATALOGUE_SCHEMA_VERSION_MINOR@,
-  'COMPLETE');
\ No newline at end of file
+  'PRODUCTION');
\ No newline at end of file
diff --git a/catalogue/migrations/liquibase/oracle/1.0to1.1.sql b/catalogue/migrations/liquibase/oracle/1.0to1.1.sql
index bdddfdd9aa..3414b8ad79 100644
--- a/catalogue/migrations/liquibase/oracle/1.0to1.1.sql
+++ b/catalogue/migrations/liquibase/oracle/1.0to1.1.sql
@@ -17,7 +17,7 @@ ADD (
 --changeset ccaffy:2 failOnError:true dbms:oracle
 --preconditions onFail:HALT onError:HALT
 --precondition-sql-check expectedResult:"1.0" 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 CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;
+ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;
 --rollback ALTER TABLE CTA_CATALOGUE DROP CONSTRAINT CATALOGUE_STATUS_CONTENT_CK;
 
 --changeset ccaffy:3 failOnError:true dbms:oracle
@@ -30,7 +30,7 @@ UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MINOR=1;
 
 --rollback UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MAJOR=NULL;
 --rollback UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MINOR=NULL;
---rollback UPDATE CTA_CATALOGUE SET STATUS='COMPLETE';
+--rollback UPDATE CTA_CATALOGUE SET STATUS='PRODUCTION';
 
 --changeset ccaffy:4 failOnError:true dbms:oracle
 --preconditions onFail:HALT onError:HALT
@@ -89,16 +89,29 @@ CREATE INDEX ARCHIVE_FILE_DFI_IDX ON ARCHIVE_FILE(DISK_FILE_ID);
 --changeset ccaffy:13 failOnError:true dbms:oracle
 --preconditions onFail:HALT onError:HALT
 --precondition-sql-check expectedResult:"1.0" 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
+ADD (
+  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,
+  DIRTY                   CHAR(1)        DEFAULT '1' CONSTRAINT TAPE_DIRTY_NN NOT NULL
+);
+--rollback ALTER TABLE TAPE
+--rollback DROP (
+--rollback   NB_MASTER_FILES, MASTER_DATA_IN_BYTES, DIRTY
+--rollback );
+
+--changeset ccaffy:14 failOnError:true dbms:oracle
+--preconditions onFail:HALT onError:HALT
+--precondition-sql-check expectedResult:"1.0" 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 SCHEMA_VERSION_MINOR=1;
 --rollback UPDATE CTA_CATALOGUE SET SCHEMA_VERSION_MINOR=0
 
---changeset ccaffy:14 failOnError:true dbms:oracle
+--changeset ccaffy:15 failOnError:true dbms:oracle
 --preconditions onFail:HALT onError:HALT
 --precondition-sql-check expectedResult:"1.1" 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 NEXT_SCHEMA_VERSION_MAJOR=NULL;
 UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MINOR=NULL;
-UPDATE CTA_CATALOGUE SET STATUS='COMPLETE';
-
+UPDATE CTA_CATALOGUE SET STATUS='PRODUCTION';
 --rollback UPDATE CTA_CATALOGUE SET STATUS='UPGRADING';
 --rollback UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MAJOR=1;
 --rollback UPDATE CTA_CATALOGUE SET NEXT_SCHEMA_VERSION_MINOR=1;
diff --git a/catalogue/mysql_catalogue_schema_trailer.sql b/catalogue/mysql_catalogue_schema_trailer.sql
index 297849c8f7..de3efc6ffc 100644
--- a/catalogue/mysql_catalogue_schema_trailer.sql
+++ b/catalogue/mysql_catalogue_schema_trailer.sql
@@ -1,2 +1,2 @@
 ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT 
-  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (STATUS='UPGRADING'));
\ No newline at end of file
+  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (STATUS='UPGRADING'));
\ No newline at end of file
diff --git a/catalogue/oracle_catalogue_schema_trailer.sql b/catalogue/oracle_catalogue_schema_trailer.sql
index 1ae83ac443..da1a196278 100644
--- a/catalogue/oracle_catalogue_schema_trailer.sql
+++ b/catalogue/oracle_catalogue_schema_trailer.sql
@@ -1,3 +1,3 @@
-ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;
+ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (NEXT_SCHEMA_VERSION_MAJOR IS NOT NULL AND NEXT_SCHEMA_VERSION_MINOR IS NOT NULL AND STATUS='UPGRADING')) INITIALLY DEFERRED;
 
 COMMIT;
diff --git a/catalogue/postgres_catalogue_schema_trailer.sql b/catalogue/postgres_catalogue_schema_trailer.sql
index 991527176c..8ed899707a 100644
--- a/catalogue/postgres_catalogue_schema_trailer.sql
+++ b/catalogue/postgres_catalogue_schema_trailer.sql
@@ -3,4 +3,4 @@ ALTER TABLE ARCHIVE_FILE DROP CONSTRAINT
 ALTER TABLE ARCHIVE_FILE ADD CONSTRAINT
   ARCHIVE_FILE_DIN_DFI_UN UNIQUE(DISK_INSTANCE_NAME, DISK_FILE_ID) DEFERRABLE INITIALLY IMMEDIATE;
 ALTER TABLE CTA_CATALOGUE ADD CONSTRAINT 
-  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='COMPLETE') OR (STATUS='UPGRADING'));
+  CATALOGUE_STATUS_CONTENT_CK CHECK((NEXT_SCHEMA_VERSION_MAJOR IS NULL AND NEXT_SCHEMA_VERSION_MINOR IS NULL AND STATUS='PRODUCTION') OR (STATUS='UPGRADING'));
-- 
GitLab