diff --git a/catalogue/AllCatalogueSchema.hpp b/catalogue/AllCatalogueSchema.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..a0e40357f064cda09d9f9450ab6647442e1f2f96
--- /dev/null
+++ b/catalogue/AllCatalogueSchema.hpp
@@ -0,0 +1,1228 @@
+/**
+ * The CERN Tape Archive (CTA) project
+ * Copyright © 2018 CERN
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include <map>
+
+namespace cta{
+namespace catalogue{
+  
+  class AllCatalogueSchema {
+    public:
+      static std::map<std::string,std::map<std::string,std::string>> mapSchema; 
+  };
+  
+  std::map<std::string,std::map<std::string,std::string>> AllCatalogueSchema::mapSchema = 
+{
+  {"1.0",
+    {
+      {"oracle",  "CREATE SEQUENCE ARCHIVE_FILE_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 4294967296"
+  "  NOMAXVALUE"
+  "  MINVALUE 1"
+  "  NOCYCLE"
+  "  CACHE 20"
+  "  NOORDER;"
+  "CREATE SEQUENCE LOGICAL_LIBRARY_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 4294967296"
+  "  NOMAXVALUE"
+  "  MINVALUE 1"
+  "  NOCYCLE"
+  "  CACHE 20"
+  "  NOORDER;"
+  "CREATE SEQUENCE STORAGE_CLASS_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 4294967296"
+  "  NOMAXVALUE"
+  "  MINVALUE 1"
+  "  NOCYCLE"
+  "  CACHE 20"
+  "  NOORDER;"
+  "CREATE SEQUENCE TAPE_POOL_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 4294967296"
+  "  NOMAXVALUE"
+  "  MINVALUE 1"
+  "  NOCYCLE"
+  "  CACHE 20"
+  "  NOORDER;"
+  "CREATE GLOBAL TEMPORARY TABLE TEMP_TAPE_FILE_INSERTION_BATCH("
+  "  VID                   VARCHAR2(100),"
+  "  FSEQ                  NUMERIC(20, 0)  ,"
+  "  BLOCK_ID              NUMERIC(20, 0)  ,"
+  "  LOGICAL_SIZE_IN_BYTES NUMERIC(20, 0)  ,"
+  "  COPY_NB               NUMERIC(3, 0)   ,"
+  "  CREATION_TIME         NUMERIC(20, 0)  ,"
+  "  ARCHIVE_FILE_ID       NUMERIC(20, 0)    "
+  ")"
+  "ON COMMIT DELETE ROWS;"
+  "CREATE INDEX TEMP_T_F_I_B_ARCHIVE_FILE_ID_I ON TEMP_TAPE_FILE_INSERTION_BATCH(ARCHIVE_FILE_ID);"
+  "CREATE TABLE CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR    NUMERIC(20, 0)      CONSTRAINT CTA_CATALOGUE_SVM1_NN NOT NULL,"
+  "  SCHEMA_VERSION_MINOR    NUMERIC(20, 0)      CONSTRAINT CTA_CATALOGUE_SVM2_NN NOT NULL"
+  ");"
+  "CREATE TABLE ADMIN_USER("
+  "  ADMIN_USER_NAME         VARCHAR2(100)    CONSTRAINT ADMIN_USER_AUN_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR2(1000)   CONSTRAINT ADMIN_USER_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT ADMIN_USER_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT ADMIN_USER_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT ADMIN_USER_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT ADMIN_USER_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT ADMIN_USER_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT ADMIN_USER_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ADMIN_USER_PK PRIMARY KEY(ADMIN_USER_NAME)"
+  ");"
+  "CREATE TABLE DISK_SYSTEM("
+  "  DISK_SYSTEM_NAME        VARCHAR2(100)    CONSTRAINT DISK_SYSTEM_DSNM_NN NOT NULL,"
+  "  FILE_REGEXP             VARCHAR2(100)    CONSTRAINT DISK_SYSTEM_FR_NN   NOT NULL,"
+  "  FREE_SPACE_QUERY_URL    VARCHAR2(1000)   CONSTRAINT DISK_SYSTEM_FSQU_NN NOT NULL,"
+  "  REFRESH_INTERVAL        NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_RI_NN   NOT NULL,"
+  "  TARGETED_FREE_SPACE     NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_TFS_NN  NOT NULL,"
+  "  SLEEP_TIME              NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_ST_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR2(1000)   CONSTRAINT DISK_SYSTEM_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT DISK_SYSTEM_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT DISK_SYSTEM_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT DISK_SYSTEM_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT DISK_SYSTEM_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_LUT_NN  NOT NULL,"
+  "  CONSTRAINT NAME_PK PRIMARY KEY(DISK_SYSTEM_NAME)"
+  ");"
+  "CREATE TABLE STORAGE_CLASS("
+  "  STORAGE_CLASS_ID        NUMERIC(20, 0)      CONSTRAINT STORAGE_CLASS_SCI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR2(100)    CONSTRAINT STORAGE_CLASS_DIN_NN  NOT NULL,"
+  "  STORAGE_CLASS_NAME      VARCHAR2(100)    CONSTRAINT STORAGE_CLASS_SCN_NN  NOT NULL,"
+  "  NB_COPIES               NUMERIC(3, 0)       CONSTRAINT STORAGE_CLASS_NC_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR2(1000)   CONSTRAINT STORAGE_CLASS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT STORAGE_CLASS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT STORAGE_CLASS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT STORAGE_CLASS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT STORAGE_CLASS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT STORAGE_CLASS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT STORAGE_CLASS_LUT_NN  NOT NULL,"
+  "  CONSTRAINT STORAGE_CLASS_PK PRIMARY KEY(STORAGE_CLASS_ID),"
+  "  CONSTRAINT STORAGE_CLASS_DIN_SCN_UN UNIQUE(DISK_INSTANCE_NAME, STORAGE_CLASS_NAME)"
+  ");"
+  "CREATE TABLE TAPE_POOL("
+  "  TAPE_POOL_ID            NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_TPI_NN  NOT NULL,"
+  "  TAPE_POOL_NAME          VARCHAR2(100)    CONSTRAINT TAPE_POOL_TPN_NN  NOT NULL,"
+  "  VO                      VARCHAR2(100)    CONSTRAINT TAPE_POOL_VO_NN   NOT NULL,"
+  "  NB_PARTIAL_TAPES        NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_NPT_NN  NOT NULL,"
+  "  IS_ENCRYPTED            CHAR(1)         CONSTRAINT TAPE_POOL_IE_NN   NOT NULL,"
+  "  SUPPLY                  VARCHAR2(100),"
+  "  USER_COMMENT            VARCHAR2(1000)   CONSTRAINT TAPE_POOL_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT TAPE_POOL_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT TAPE_POOL_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT TAPE_POOL_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT TAPE_POOL_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_LUT_NN  NOT NULL,"
+  "  CONSTRAINT TAPE_POOL_PK PRIMARY KEY(TAPE_POOL_ID),"
+  "  CONSTRAINT TAPE_POOL_TPN_UN UNIQUE(TAPE_POOL_NAME),"
+  "  CONSTRAINT TAPE_POOL_IS_ENCRYPTED_BOOL_CK CHECK(IS_ENCRYPTED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE ARCHIVE_ROUTE("
+  "  STORAGE_CLASS_ID        NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_SCI_NN  NOT NULL,"
+  "  COPY_NB                 NUMERIC(3, 0)       CONSTRAINT ARCHIVE_ROUTE_CN_NN   NOT NULL,"
+  "  TAPE_POOL_ID            NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_TPI_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR2(1000)   CONSTRAINT ARCHIVE_ROUTE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT ARCHIVE_ROUTE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT ARCHIVE_ROUTE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT ARCHIVE_ROUTE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT ARCHIVE_ROUTE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ARCHIVE_ROUTE_PK PRIMARY KEY(STORAGE_CLASS_ID, COPY_NB),"
+  "  CONSTRAINT ARCHIVE_ROUTE_STORAGE_CLASS_FK FOREIGN KEY(STORAGE_CLASS_ID) REFERENCES STORAGE_CLASS(STORAGE_CLASS_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0)"
+  ");"
+  "CREATE TABLE LOGICAL_LIBRARY("
+  "  LOGICAL_LIBRARY_ID      NUMERIC(20, 0)      CONSTRAINT LOGICAL_LIBRARY_LLI_NN  NOT NULL,"
+  "  LOGICAL_LIBRARY_NAME    VARCHAR2(100)    CONSTRAINT LOGICAL_LIBRARY_LLN_NN  NOT NULL,"
+  "  IS_DISABLED             CHAR(1)         DEFAULT '0' CONSTRAINT LOGICAL_LIBRARY_ID_NN NOT NULL,"
+  "  USER_COMMENT            VARCHAR2(1000)   CONSTRAINT LOGICAL_LIBRARY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR2(100)    CONSTRAINT LOGICAL_LIBRARY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR2(100)    CONSTRAINT LOGICAL_LIBRARY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT LOGICAL_LIBRARY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT LOGICAL_LIBRARY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT LOGICAL_LIBRARY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT LOGICAL_LIBRARY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT LOGICAL_LIBRARY_PK PRIMARY KEY(LOGICAL_LIBRARY_ID),"
+  "  CONSTRAINT LOGICAL_LIBRARY_LLN UNIQUE(LOGICAL_LIBRARY_NAME),"
+  "  CONSTRAINT LOGICAL_LIBRARY_ID_BOOL_CK CHECK(IS_DISABLED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE TAPE("
+  "  VID                     VARCHAR2(100)    CONSTRAINT TAPE_V_NN    NOT NULL,"
+  "  MEDIA_TYPE              VARCHAR2(100)    CONSTRAINT TAPE_MT_NN   NOT NULL,"
+  "  VENDOR                  VARCHAR2(100)    CONSTRAINT TAPE_V2_NN   NOT NULL,"
+  "  LOGICAL_LIBRARY_ID      NUMERIC(20, 0)      CONSTRAINT TAPE_LLI_NN  NOT NULL,"
+  "  TAPE_POOL_ID            NUMERIC(20, 0)      CONSTRAINT TAPE_TPI_NN  NOT NULL,"
+  "  ENCRYPTION_KEY_NAME     VARCHAR2(100),"
+  "  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,"
+  "  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,"
+  "  LABEL_DRIVE             VARCHAR2(100),"
+  "  LABEL_TIME              NUMERIC(20, 0)    ,"
+  "  LAST_READ_DRIVE         VARCHAR2(100),"
+  "  LAST_READ_TIME          NUMERIC(20, 0)    ,"
+  "  LAST_WRITE_DRIVE        VARCHAR2(100),"
+  "  LAST_WRITE_TIME         NUMERIC(20, 0)    ,"
+  "  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)   CONSTRAINT TAPE_UC_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,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR2(100)    CONSTRAINT TAPE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR2(100)    CONSTRAINT TAPE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT TAPE_LUT_NN  NOT NULL,"
+  "  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_IS_ARCHVIED_BOOL_CK CHECK(IS_ARCHIVED IN ('0', '1')),"
+  "  CONSTRAINT TAPE_IS_EXPORTED_BOOL_CK CHECK(IS_EXPORTED IN ('0', '1'))"
+  ");"
+  "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
+  "CREATE TABLE MOUNT_POLICY("
+  "  MOUNT_POLICY_NAME        VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
+  "  ARCHIVE_PRIORITY         NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_AP_NN   NOT NULL,"
+  "  ARCHIVE_MIN_REQUEST_AGE  NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_AMRA_NN NOT NULL,"
+  "  RETRIEVE_PRIORITY        NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_RP_NN   NOT NULL,"
+  "  RETRIEVE_MIN_REQUEST_AGE NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_RMRA_NN NOT NULL,"
+  "  MAX_DRIVES_ALLOWED       NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_MDA_NN  NOT NULL,"
+  "  USER_COMMENT             VARCHAR2(1000)   CONSTRAINT MOUNT_POLICY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR2(100)    CONSTRAINT MOUNT_POLICY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT MOUNT_POLICY_PK PRIMARY KEY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR2(100)    CONSTRAINT RQSTER_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_NAME         VARCHAR2(100)    CONSTRAINT RQSTER_RULE_RN_NN   NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR2(100)    CONSTRAINT RQSTER_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR2(1000)   CONSTRAINT RQSTER_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR2(100)    CONSTRAINT RQSTER_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR2(100)    CONSTRAINT RQSTER_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      NUMERIC(20, 0)      CONSTRAINT RQSTER_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR2(100)    CONSTRAINT RQSTER_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR2(100)    CONSTRAINT RQSTER_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT RQSTER_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_NAME),"
+  "  CONSTRAINT RQSTER_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_GROUP_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_GROUP_NAME   VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_RGN_NN  NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR2(1000)   CONSTRAINT RQSTER_GRP_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      NUMERIC(20, 0)      CONSTRAINT RQSTER_GRP_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR2(100)    CONSTRAINT RQSTER_GRP_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT RQSTER_GRP_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_GRP_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_GROUP_NAME),"
+  "  CONSTRAINT RQSTER_GRP_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE ARCHIVE_FILE("
+  "  ARCHIVE_FILE_ID         NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_AFI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR2(100)    CONSTRAINT ARCHIVE_FILE_DIN_NN  NOT NULL,"
+  "  DISK_FILE_ID            VARCHAR2(100)    CONSTRAINT ARCHIVE_FILE_DFI_NN  NOT NULL,"
+  "  DISK_FILE_PATH          VARCHAR2(2000)   CONSTRAINT ARCHIVE_FILE_DFP_NN  NOT NULL,"
+  "  DISK_FILE_UID           NUMERIC(10, 0)      CONSTRAINT ARCHIVE_FILE_DFUID_NN  NOT NULL,"
+  "  DISK_FILE_GID           NUMERIC(10, 0)      CONSTRAINT ARCHIVE_FILE_DFGID_NN  NOT NULL,"
+  "  SIZE_IN_BYTES           NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_SIB_NN  NOT NULL,"
+  "  CHECKSUM_BLOB           RAW(200),"
+  "  CHECKSUM_ADLER32        NUMERIC(10, 0)      CONSTRAINT ARCHIVE_FILE_CB2_NN  NOT NULL,"
+  "  STORAGE_CLASS_ID        NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_SCI_NN  NOT NULL,"
+  "  CREATION_TIME           NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_CT2_NN  NOT NULL,"
+  "  RECONCILIATION_TIME     NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_RT_NN   NOT NULL,"
+  "  IS_DELETED              CHAR(1)         DEFAULT '0' CONSTRAINT ARCHIVE_FILE_ID_NN NOT NULL,"
+  "  COLLOCATION_HINT        VARCHAR2(100),"
+  "  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_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("
+  "  VID                      VARCHAR2(100)   CONSTRAINT TAPE_FILE_V_NN    NOT NULL,"
+  "  FSEQ                     NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_F_NN    NOT NULL,"
+  "  BLOCK_ID                 NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_BI_NN   NOT NULL,"
+  "  LOGICAL_SIZE_IN_BYTES    NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CSIB_NN NOT NULL,"
+  "  COPY_NB                  NUMERIC(3, 0)      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
+  "  CREATION_TIME            NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
+  "  ARCHIVE_FILE_ID          NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  SUPERSEDED_BY_VID        VARCHAR2(100),"
+  "  SUPERSEDED_BY_FSEQ       NUMERIC(20, 0)    ,"
+  "  WRITE_START_WRAP         NUMERIC(5, 0),"
+  "  WRITE_START_LPOS         NUMERIC(10, 0),"
+  "  WRITE_END_WRAP           NUMERIC(5, 0),"
+  "  WRITE_END_LPOS           NUMERIC(10, 0),"
+  "  READ_START_WRAP          NUMERIC(5, 0),"
+  "  READ_START_LPOS          NUMERIC(10, 0),"
+  "  READ_END_WRAP            NUMERIC(5, 0),"
+  "  READ_END_LPOS            NUMERIC(10, 0),"
+  "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
+  "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
+  "    REFERENCES TAPE(VID),"
+  "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
+  "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
+  "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_SS_VID_FSEQ_FK FOREIGN KEY(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ)"
+  "    REFERENCES TAPE_FILE(VID, FSEQ)"
+  ");"
+  "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
+  "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
+  "CREATE INDEX TAPE_FILE_SBV_SBF_IDX ON TAPE_FILE(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ);"
+  "CREATE TABLE ACTIVITIES_WEIGHTS ("
+  "  DISK_INSTANCE_NAME       VARCHAR2(100),"
+  "  ACTIVITY                 VARCHAR2(100),"
+  "  WEIGHT                   VARCHAR2(100),"
+  "  USER_COMMENT             VARCHAR2(1000)   CONSTRAINT ACTIV_WEIGHTS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR2(100)    CONSTRAINT ACTIV_WEIGHTS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR2(100)    CONSTRAINT ACTIV_WEIGHTS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        NUMERIC(20, 0)      CONSTRAINT ACTIV_WEIGHTS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR2(100)    CONSTRAINT ACTIV_WEIGHTS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR2(100)    CONSTRAINT ACTIV_WEIGHTS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         NUMERIC(20, 0)      CONSTRAINT ACTIV_WEIGHTS_LUT_NN  NOT NULL"
+  ");"
+  "CREATE TABLE USAGESTATS ("
+  "  GID                     NUMERIC(10, 0)   DEFAULT 0 CONSTRAINT NN_USAGESTATS_GID NOT NULL,"
+  "  TIMESTAMP               NUMERIC(20, 0)  DEFAULT 0 CONSTRAINT NN_USAGESTATS_TS NOT NULL,"
+  "  MAXFILEID               NUMERIC(20, 0),"
+  "  FILECOUNT               NUMERIC(20, 0),"
+  "  FILESIZE                NUMERIC(20, 0),"
+  "  SEGCOUNT                NUMERIC(20, 0),"
+  "  SEGSIZE                 NUMERIC(20, 0),"
+  "  SEG2COUNT               NUMERIC(20, 0),"
+  "  SEG2SIZE                NUMERIC(20, 0),"
+  "  CONSTRAINT PK_USAGESTATS_GID_TS PRIMARY KEY (GID, TIMESTAMP)"
+  ");"
+  "CREATE TABLE EXPERIMENTS ("
+  " NAME                     VARCHAR2(20),"
+  " GID                      NUMERIC(10, 0) CONSTRAINT EXPERIMENTS_GID_PK PRIMARY KEY"
+  ");"
+  "INSERT INTO CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR,"
+  "  SCHEMA_VERSION_MINOR)"
+  "VALUES("
+  "  1,"
+  "  0);"
+  "COMMIT;"
+      },
+  {"mysql",  "CREATE TABLE ARCHIVE_FILE_ID("
+  "  ID BIGINT UNSIGNED,"
+  "  CONSTRAINT ARCHIVE_FILE_ID_PK PRIMARY KEY(ID)"
+  ");"
+  "INSERT INTO ARCHIVE_FILE_ID(ID) VALUES(1);"
+  "CREATE TABLE LOGICAL_LIBRARY_ID("
+  "  ID BIGINT UNSIGNED,"
+  "  CONSTRAINT LOGICAL_LIBRARY_ID_PK PRIMARY KEY(ID)"
+  ");"
+  "INSERT INTO LOGICAL_LIBRARY_ID(ID) VALUES(1);"
+  "CREATE TABLE STORAGE_CLASS_ID("
+  "  ID BIGINT UNSIGNED,"
+  "  CONSTRAINT STORAGE_CLASS_ID_PK PRIMARY KEY(ID)"
+  ");"
+  "INSERT INTO STORAGE_CLASS_ID(ID) VALUES(1);"
+  "CREATE TABLE TAPE_POOL_ID("
+  "  ID BIGINT UNSIGNED,"
+  "  CONSTRAINT TAPE_POOL_ID_PK PRIMARY KEY(ID)"
+  ");"
+  "INSERT INTO TAPE_POOL_ID(ID) VALUES(1);"
+  ""
+  "CREATE TABLE CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR    BIGINT UNSIGNED      CONSTRAINT CTA_CATALOGUE_SVM1_NN NOT NULL,"
+  "  SCHEMA_VERSION_MINOR    BIGINT UNSIGNED      CONSTRAINT CTA_CATALOGUE_SVM2_NN NOT NULL"
+  ");"
+  "CREATE TABLE ADMIN_USER("
+  "  ADMIN_USER_NAME         VARCHAR(100)    CONSTRAINT ADMIN_USER_AUN_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT ADMIN_USER_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT ADMIN_USER_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT ADMIN_USER_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT ADMIN_USER_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT ADMIN_USER_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT ADMIN_USER_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT ADMIN_USER_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ADMIN_USER_PK PRIMARY KEY(ADMIN_USER_NAME)"
+  ");"
+  "CREATE TABLE DISK_SYSTEM("
+  "  DISK_SYSTEM_NAME        VARCHAR(100)    CONSTRAINT DISK_SYSTEM_DSNM_NN NOT NULL,"
+  "  FILE_REGEXP             VARCHAR(100)    CONSTRAINT DISK_SYSTEM_FR_NN   NOT NULL,"
+  "  FREE_SPACE_QUERY_URL    VARCHAR(1000)   CONSTRAINT DISK_SYSTEM_FSQU_NN NOT NULL,"
+  "  REFRESH_INTERVAL        BIGINT UNSIGNED      CONSTRAINT DISK_SYSTEM_RI_NN   NOT NULL,"
+  "  TARGETED_FREE_SPACE     BIGINT UNSIGNED      CONSTRAINT DISK_SYSTEM_TFS_NN  NOT NULL,"
+  "  SLEEP_TIME              BIGINT UNSIGNED      CONSTRAINT DISK_SYSTEM_ST_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT DISK_SYSTEM_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT DISK_SYSTEM_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT DISK_SYSTEM_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT DISK_SYSTEM_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT DISK_SYSTEM_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT DISK_SYSTEM_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT DISK_SYSTEM_LUT_NN  NOT NULL,"
+  "  CONSTRAINT NAME_PK PRIMARY KEY(DISK_SYSTEM_NAME)"
+  ");"
+  "CREATE TABLE STORAGE_CLASS("
+  "  STORAGE_CLASS_ID        BIGINT UNSIGNED      CONSTRAINT STORAGE_CLASS_SCI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR(100)    CONSTRAINT STORAGE_CLASS_DIN_NN  NOT NULL,"
+  "  STORAGE_CLASS_NAME      VARCHAR(100)    CONSTRAINT STORAGE_CLASS_SCN_NN  NOT NULL,"
+  "  NB_COPIES               TINYINT UNSIGNED       CONSTRAINT STORAGE_CLASS_NC_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT STORAGE_CLASS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT STORAGE_CLASS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT STORAGE_CLASS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT STORAGE_CLASS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT STORAGE_CLASS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT STORAGE_CLASS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT STORAGE_CLASS_LUT_NN  NOT NULL,"
+  "  CONSTRAINT STORAGE_CLASS_PK PRIMARY KEY(STORAGE_CLASS_ID),"
+  "  CONSTRAINT STORAGE_CLASS_DIN_SCN_UN UNIQUE(DISK_INSTANCE_NAME, STORAGE_CLASS_NAME)"
+  ");"
+  "CREATE TABLE TAPE_POOL("
+  "  TAPE_POOL_ID            BIGINT UNSIGNED      CONSTRAINT TAPE_POOL_TPI_NN  NOT NULL,"
+  "  TAPE_POOL_NAME          VARCHAR(100)    CONSTRAINT TAPE_POOL_TPN_NN  NOT NULL,"
+  "  VO                      VARCHAR(100)    CONSTRAINT TAPE_POOL_VO_NN   NOT NULL,"
+  "  NB_PARTIAL_TAPES        BIGINT UNSIGNED      CONSTRAINT TAPE_POOL_NPT_NN  NOT NULL,"
+  "  IS_ENCRYPTED            CHAR(1)         CONSTRAINT TAPE_POOL_IE_NN   NOT NULL,"
+  "  SUPPLY                  VARCHAR(100),"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT TAPE_POOL_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_POOL_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_POOL_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT TAPE_POOL_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT TAPE_POOL_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT TAPE_POOL_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT TAPE_POOL_LUT_NN  NOT NULL,"
+  "  CONSTRAINT TAPE_POOL_PK PRIMARY KEY(TAPE_POOL_ID),"
+  "  CONSTRAINT TAPE_POOL_TPN_UN UNIQUE(TAPE_POOL_NAME),"
+  "  CONSTRAINT TAPE_POOL_IS_ENCRYPTED_BOOL_CK CHECK(IS_ENCRYPTED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE ARCHIVE_ROUTE("
+  "  STORAGE_CLASS_ID        BIGINT UNSIGNED      CONSTRAINT ARCHIVE_ROUTE_SCI_NN  NOT NULL,"
+  "  COPY_NB                 TINYINT UNSIGNED       CONSTRAINT ARCHIVE_ROUTE_CN_NN   NOT NULL,"
+  "  TAPE_POOL_ID            BIGINT UNSIGNED      CONSTRAINT ARCHIVE_ROUTE_TPI_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT ARCHIVE_ROUTE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT ARCHIVE_ROUTE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT ARCHIVE_ROUTE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ARCHIVE_ROUTE_PK PRIMARY KEY(STORAGE_CLASS_ID, COPY_NB),"
+  "  CONSTRAINT ARCHIVE_ROUTE_STORAGE_CLASS_FK FOREIGN KEY(STORAGE_CLASS_ID) REFERENCES STORAGE_CLASS(STORAGE_CLASS_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0)"
+  ");"
+  "CREATE TABLE LOGICAL_LIBRARY("
+  "  LOGICAL_LIBRARY_ID      BIGINT UNSIGNED      CONSTRAINT LOGICAL_LIBRARY_LLI_NN  NOT NULL,"
+  "  LOGICAL_LIBRARY_NAME    VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LLN_NN  NOT NULL,"
+  "  IS_DISABLED             CHAR(1)         DEFAULT '0' CONSTRAINT LOGICAL_LIBRARY_ID_NN NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT LOGICAL_LIBRARY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       BIGINT UNSIGNED      CONSTRAINT LOGICAL_LIBRARY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT LOGICAL_LIBRARY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT LOGICAL_LIBRARY_PK PRIMARY KEY(LOGICAL_LIBRARY_ID),"
+  "  CONSTRAINT LOGICAL_LIBRARY_LLN UNIQUE(LOGICAL_LIBRARY_NAME),"
+  "  CONSTRAINT LOGICAL_LIBRARY_ID_BOOL_CK CHECK(IS_DISABLED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE TAPE("
+  "  VID                     VARCHAR(100)    CONSTRAINT TAPE_V_NN    NOT NULL,"
+  "  MEDIA_TYPE              VARCHAR(100)    CONSTRAINT TAPE_MT_NN   NOT NULL,"
+  "  VENDOR                  VARCHAR(100)    CONSTRAINT TAPE_V2_NN   NOT NULL,"
+  "  LOGICAL_LIBRARY_ID      BIGINT UNSIGNED      CONSTRAINT TAPE_LLI_NN  NOT NULL,"
+  "  TAPE_POOL_ID            BIGINT UNSIGNED      CONSTRAINT TAPE_TPI_NN  NOT NULL,"
+  "  ENCRYPTION_KEY_NAME     VARCHAR(100),"
+  "  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,"
+  "  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,"
+  "  LABEL_DRIVE             VARCHAR(100),"
+  "  LABEL_TIME              BIGINT UNSIGNED    ,"
+  "  LAST_READ_DRIVE         VARCHAR(100),"
+  "  LAST_READ_TIME          BIGINT UNSIGNED    ,"
+  "  LAST_WRITE_DRIVE        VARCHAR(100),"
+  "  LAST_WRITE_TIME         BIGINT UNSIGNED    ,"
+  "  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)   CONSTRAINT TAPE_UC_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,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT TAPE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT TAPE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        BIGINT UNSIGNED      CONSTRAINT TAPE_LUT_NN  NOT NULL,"
+  "  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_IS_ARCHVIED_BOOL_CK CHECK(IS_ARCHIVED IN ('0', '1')),"
+  "  CONSTRAINT TAPE_IS_EXPORTED_BOOL_CK CHECK(IS_EXPORTED IN ('0', '1'))"
+  ");"
+  "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
+  "CREATE TABLE MOUNT_POLICY("
+  "  MOUNT_POLICY_NAME        VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
+  "  ARCHIVE_PRIORITY         BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_AP_NN   NOT NULL,"
+  "  ARCHIVE_MIN_REQUEST_AGE  BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_AMRA_NN NOT NULL,"
+  "  RETRIEVE_PRIORITY        BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_RP_NN   NOT NULL,"
+  "  RETRIEVE_MIN_REQUEST_AGE BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_RMRA_NN NOT NULL,"
+  "  MAX_DRIVES_ALLOWED       BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_MDA_NN  NOT NULL,"
+  "  USER_COMMENT             VARCHAR(1000)   CONSTRAINT MOUNT_POLICY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR(100)    CONSTRAINT MOUNT_POLICY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR(100)    CONSTRAINT MOUNT_POLICY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR(100)    CONSTRAINT MOUNT_POLICY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR(100)    CONSTRAINT MOUNT_POLICY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         BIGINT UNSIGNED      CONSTRAINT MOUNT_POLICY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT MOUNT_POLICY_PK PRIMARY KEY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR(100)    CONSTRAINT RQSTER_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_NAME         VARCHAR(100)    CONSTRAINT RQSTER_RULE_RN_NN   NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR(100)    CONSTRAINT RQSTER_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR(1000)   CONSTRAINT RQSTER_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR(100)    CONSTRAINT RQSTER_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR(100)    CONSTRAINT RQSTER_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      BIGINT UNSIGNED      CONSTRAINT RQSTER_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR(100)    CONSTRAINT RQSTER_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR(100)    CONSTRAINT RQSTER_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       BIGINT UNSIGNED      CONSTRAINT RQSTER_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_NAME),"
+  "  CONSTRAINT RQSTER_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_GROUP_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_GROUP_NAME   VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_RGN_NN  NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR(1000)   CONSTRAINT RQSTER_GRP_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      BIGINT UNSIGNED      CONSTRAINT RQSTER_GRP_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       BIGINT UNSIGNED      CONSTRAINT RQSTER_GRP_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_GRP_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_GROUP_NAME),"
+  "  CONSTRAINT RQSTER_GRP_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE ARCHIVE_FILE("
+  "  ARCHIVE_FILE_ID         BIGINT UNSIGNED      CONSTRAINT ARCHIVE_FILE_AFI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR(100)    CONSTRAINT ARCHIVE_FILE_DIN_NN  NOT NULL,"
+  "  DISK_FILE_ID            VARCHAR(100)    CONSTRAINT ARCHIVE_FILE_DFI_NN  NOT NULL,"
+  "  DISK_FILE_PATH          VARCHAR(2000)   CONSTRAINT ARCHIVE_FILE_DFP_NN  NOT NULL,"
+  "  DISK_FILE_UID           INT UNSIGNED      CONSTRAINT ARCHIVE_FILE_DFUID_NN  NOT NULL,"
+  "  DISK_FILE_GID           INT UNSIGNED      CONSTRAINT ARCHIVE_FILE_DFGID_NN  NOT NULL,"
+  "  SIZE_IN_BYTES           BIGINT UNSIGNED      CONSTRAINT ARCHIVE_FILE_SIB_NN  NOT NULL,"
+  "  CHECKSUM_BLOB           VARBINARY(200),"
+  "  CHECKSUM_ADLER32        INT UNSIGNED      CONSTRAINT ARCHIVE_FILE_CB2_NN  NOT NULL,"
+  "  STORAGE_CLASS_ID        BIGINT UNSIGNED      CONSTRAINT ARCHIVE_FILE_SCI_NN  NOT NULL,"
+  "  CREATION_TIME           BIGINT UNSIGNED      CONSTRAINT ARCHIVE_FILE_CT2_NN  NOT NULL,"
+  "  RECONCILIATION_TIME     BIGINT UNSIGNED      CONSTRAINT ARCHIVE_FILE_RT_NN   NOT NULL,"
+  "  IS_DELETED              CHAR(1)         DEFAULT '0' CONSTRAINT ARCHIVE_FILE_ID_NN NOT NULL,"
+  "  COLLOCATION_HINT        VARCHAR(100),"
+  "  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_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("
+  "  VID                      VARCHAR(100)   CONSTRAINT TAPE_FILE_V_NN    NOT NULL,"
+  "  FSEQ                     BIGINT UNSIGNED     CONSTRAINT TAPE_FILE_F_NN    NOT NULL,"
+  "  BLOCK_ID                 BIGINT UNSIGNED     CONSTRAINT TAPE_FILE_BI_NN   NOT NULL,"
+  "  LOGICAL_SIZE_IN_BYTES    BIGINT UNSIGNED     CONSTRAINT TAPE_FILE_CSIB_NN NOT NULL,"
+  "  COPY_NB                  TINYINT UNSIGNED      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
+  "  CREATION_TIME            BIGINT UNSIGNED     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
+  "  ARCHIVE_FILE_ID          BIGINT UNSIGNED     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  SUPERSEDED_BY_VID        VARCHAR(100),"
+  "  SUPERSEDED_BY_FSEQ       BIGINT UNSIGNED    ,"
+  "  WRITE_START_WRAP         SMALLINT UNSIGNED,"
+  "  WRITE_START_LPOS         INT UNSIGNED,"
+  "  WRITE_END_WRAP           SMALLINT UNSIGNED,"
+  "  WRITE_END_LPOS           INT UNSIGNED,"
+  "  READ_START_WRAP          SMALLINT UNSIGNED,"
+  "  READ_START_LPOS          INT UNSIGNED,"
+  "  READ_END_WRAP            SMALLINT UNSIGNED,"
+  "  READ_END_LPOS            INT UNSIGNED,"
+  "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
+  "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
+  "    REFERENCES TAPE(VID),"
+  "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
+  "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
+  "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_SS_VID_FSEQ_FK FOREIGN KEY(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ)"
+  "    REFERENCES TAPE_FILE(VID, FSEQ)"
+  ");"
+  "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
+  "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
+  "CREATE INDEX TAPE_FILE_SBV_SBF_IDX ON TAPE_FILE(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ);"
+  "CREATE TABLE ACTIVITIES_WEIGHTS ("
+  "  DISK_INSTANCE_NAME       VARCHAR(100),"
+  "  ACTIVITY                 VARCHAR(100),"
+  "  WEIGHT                   VARCHAR(100),"
+  "  USER_COMMENT             VARCHAR(1000)   CONSTRAINT ACTIV_WEIGHTS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        BIGINT UNSIGNED      CONSTRAINT ACTIV_WEIGHTS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         BIGINT UNSIGNED      CONSTRAINT ACTIV_WEIGHTS_LUT_NN  NOT NULL"
+  ");"
+  "CREATE TABLE USAGESTATS ("
+  "  GID                     INT UNSIGNED   DEFAULT 0 CONSTRAINT NN_USAGESTATS_GID NOT NULL,"
+  "  TIMESTAMP               BIGINT UNSIGNED  DEFAULT 0 CONSTRAINT NN_USAGESTATS_TS NOT NULL,"
+  "  MAXFILEID               BIGINT UNSIGNED,"
+  "  FILECOUNT               BIGINT UNSIGNED,"
+  "  FILESIZE                BIGINT UNSIGNED,"
+  "  SEGCOUNT                BIGINT UNSIGNED,"
+  "  SEGSIZE                 BIGINT UNSIGNED,"
+  "  SEG2COUNT               BIGINT UNSIGNED,"
+  "  SEG2SIZE                BIGINT UNSIGNED,"
+  "  CONSTRAINT PK_USAGESTATS_GID_TS PRIMARY KEY (GID, TIMESTAMP)"
+  ");"
+  "CREATE TABLE EXPERIMENTS ("
+  " NAME                     VARCHAR(20),"
+  " GID                      INT UNSIGNED CONSTRAINT EXPERIMENTS_GID_PK PRIMARY KEY"
+  ");"
+  "INSERT INTO CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR,"
+  "  SCHEMA_VERSION_MINOR)"
+  "VALUES("
+  "  1,"
+  "  0);"
+      },
+  {"sqlite",  "CREATE TABLE ARCHIVE_FILE_ID("
+  "  ID INTEGER PRIMARY KEY AUTOINCREMENT"
+  ");"
+  "CREATE TABLE LOGICAL_LIBRARY_ID("
+  "  ID INTEGER PRIMARY KEY AUTOINCREMENT"
+  ");"
+  "CREATE TABLE STORAGE_CLASS_ID("
+  "  ID INTEGER PRIMARY KEY AUTOINCREMENT"
+  ");"
+  "CREATE TABLE TAPE_POOL_ID("
+  "  ID INTEGER PRIMARY KEY AUTOINCREMENT"
+  ");"
+  "CREATE TABLE CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR    INTEGER      CONSTRAINT CTA_CATALOGUE_SVM1_NN NOT NULL,"
+  "  SCHEMA_VERSION_MINOR    INTEGER      CONSTRAINT CTA_CATALOGUE_SVM2_NN NOT NULL"
+  ");"
+  "CREATE TABLE ADMIN_USER("
+  "  ADMIN_USER_NAME         VARCHAR(100)    CONSTRAINT ADMIN_USER_AUN_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT ADMIN_USER_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT ADMIN_USER_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT ADMIN_USER_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       INTEGER      CONSTRAINT ADMIN_USER_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT ADMIN_USER_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT ADMIN_USER_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT ADMIN_USER_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ADMIN_USER_PK PRIMARY KEY(ADMIN_USER_NAME)"
+  ");"
+  "CREATE TABLE DISK_SYSTEM("
+  "  DISK_SYSTEM_NAME        VARCHAR(100)    CONSTRAINT DISK_SYSTEM_DSNM_NN NOT NULL,"
+  "  FILE_REGEXP             VARCHAR(100)    CONSTRAINT DISK_SYSTEM_FR_NN   NOT NULL,"
+  "  FREE_SPACE_QUERY_URL    VARCHAR(1000)   CONSTRAINT DISK_SYSTEM_FSQU_NN NOT NULL,"
+  "  REFRESH_INTERVAL        INTEGER      CONSTRAINT DISK_SYSTEM_RI_NN   NOT NULL,"
+  "  TARGETED_FREE_SPACE     INTEGER      CONSTRAINT DISK_SYSTEM_TFS_NN  NOT NULL,"
+  "  SLEEP_TIME              INTEGER      CONSTRAINT DISK_SYSTEM_ST_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT DISK_SYSTEM_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT DISK_SYSTEM_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT DISK_SYSTEM_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       INTEGER      CONSTRAINT DISK_SYSTEM_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT DISK_SYSTEM_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT DISK_SYSTEM_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT DISK_SYSTEM_LUT_NN  NOT NULL,"
+  "  CONSTRAINT NAME_PK PRIMARY KEY(DISK_SYSTEM_NAME)"
+  ");"
+  "CREATE TABLE STORAGE_CLASS("
+  "  STORAGE_CLASS_ID        INTEGER      CONSTRAINT STORAGE_CLASS_SCI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR(100)    CONSTRAINT STORAGE_CLASS_DIN_NN  NOT NULL,"
+  "  STORAGE_CLASS_NAME      VARCHAR(100)    CONSTRAINT STORAGE_CLASS_SCN_NN  NOT NULL,"
+  "  NB_COPIES               INTEGER       CONSTRAINT STORAGE_CLASS_NC_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT STORAGE_CLASS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT STORAGE_CLASS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT STORAGE_CLASS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       INTEGER      CONSTRAINT STORAGE_CLASS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT STORAGE_CLASS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT STORAGE_CLASS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT STORAGE_CLASS_LUT_NN  NOT NULL,"
+  "  CONSTRAINT STORAGE_CLASS_PK PRIMARY KEY(STORAGE_CLASS_ID),"
+  "  CONSTRAINT STORAGE_CLASS_DIN_SCN_UN UNIQUE(DISK_INSTANCE_NAME, STORAGE_CLASS_NAME)"
+  ");"
+  "CREATE TABLE TAPE_POOL("
+  "  TAPE_POOL_ID            INTEGER      CONSTRAINT TAPE_POOL_TPI_NN  NOT NULL,"
+  "  TAPE_POOL_NAME          VARCHAR(100)    CONSTRAINT TAPE_POOL_TPN_NN  NOT NULL,"
+  "  VO                      VARCHAR(100)    CONSTRAINT TAPE_POOL_VO_NN   NOT NULL,"
+  "  NB_PARTIAL_TAPES        INTEGER      CONSTRAINT TAPE_POOL_NPT_NN  NOT NULL,"
+  "  IS_ENCRYPTED            CHAR(1)         CONSTRAINT TAPE_POOL_IE_NN   NOT NULL,"
+  "  SUPPLY                  VARCHAR(100),"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT TAPE_POOL_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_POOL_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_POOL_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       INTEGER      CONSTRAINT TAPE_POOL_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT TAPE_POOL_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT TAPE_POOL_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT TAPE_POOL_LUT_NN  NOT NULL,"
+  "  CONSTRAINT TAPE_POOL_PK PRIMARY KEY(TAPE_POOL_ID),"
+  "  CONSTRAINT TAPE_POOL_TPN_UN UNIQUE(TAPE_POOL_NAME),"
+  "  CONSTRAINT TAPE_POOL_IS_ENCRYPTED_BOOL_CK CHECK(IS_ENCRYPTED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE ARCHIVE_ROUTE("
+  "  STORAGE_CLASS_ID        INTEGER      CONSTRAINT ARCHIVE_ROUTE_SCI_NN  NOT NULL,"
+  "  COPY_NB                 INTEGER       CONSTRAINT ARCHIVE_ROUTE_CN_NN   NOT NULL,"
+  "  TAPE_POOL_ID            INTEGER      CONSTRAINT ARCHIVE_ROUTE_TPI_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT ARCHIVE_ROUTE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       INTEGER      CONSTRAINT ARCHIVE_ROUTE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT ARCHIVE_ROUTE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ARCHIVE_ROUTE_PK PRIMARY KEY(STORAGE_CLASS_ID, COPY_NB),"
+  "  CONSTRAINT ARCHIVE_ROUTE_STORAGE_CLASS_FK FOREIGN KEY(STORAGE_CLASS_ID) REFERENCES STORAGE_CLASS(STORAGE_CLASS_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0)"
+  ");"
+  "CREATE TABLE LOGICAL_LIBRARY("
+  "  LOGICAL_LIBRARY_ID      INTEGER      CONSTRAINT LOGICAL_LIBRARY_LLI_NN  NOT NULL,"
+  "  LOGICAL_LIBRARY_NAME    VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LLN_NN  NOT NULL,"
+  "  IS_DISABLED             CHAR(1)         DEFAULT '0' CONSTRAINT LOGICAL_LIBRARY_ID_NN NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT LOGICAL_LIBRARY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       INTEGER      CONSTRAINT LOGICAL_LIBRARY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT LOGICAL_LIBRARY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT LOGICAL_LIBRARY_PK PRIMARY KEY(LOGICAL_LIBRARY_ID),"
+  "  CONSTRAINT LOGICAL_LIBRARY_LLN UNIQUE(LOGICAL_LIBRARY_NAME),"
+  "  CONSTRAINT LOGICAL_LIBRARY_ID_BOOL_CK CHECK(IS_DISABLED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE TAPE("
+  "  VID                     VARCHAR(100)    CONSTRAINT TAPE_V_NN    NOT NULL,"
+  "  MEDIA_TYPE              VARCHAR(100)    CONSTRAINT TAPE_MT_NN   NOT NULL,"
+  "  VENDOR                  VARCHAR(100)    CONSTRAINT TAPE_V2_NN   NOT NULL,"
+  "  LOGICAL_LIBRARY_ID      INTEGER      CONSTRAINT TAPE_LLI_NN  NOT NULL,"
+  "  TAPE_POOL_ID            INTEGER      CONSTRAINT TAPE_TPI_NN  NOT NULL,"
+  "  ENCRYPTION_KEY_NAME     VARCHAR(100),"
+  "  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,"
+  "  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,"
+  "  LABEL_DRIVE             VARCHAR(100),"
+  "  LABEL_TIME              INTEGER    ,"
+  "  LAST_READ_DRIVE         VARCHAR(100),"
+  "  LAST_READ_TIME          INTEGER    ,"
+  "  LAST_WRITE_DRIVE        VARCHAR(100),"
+  "  LAST_WRITE_TIME         INTEGER    ,"
+  "  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)   CONSTRAINT TAPE_UC_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,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT TAPE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT TAPE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        INTEGER      CONSTRAINT TAPE_LUT_NN  NOT NULL,"
+  "  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_IS_ARCHVIED_BOOL_CK CHECK(IS_ARCHIVED IN ('0', '1')),"
+  "  CONSTRAINT TAPE_IS_EXPORTED_BOOL_CK CHECK(IS_EXPORTED IN ('0', '1'))"
+  ");"
+  "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
+  "CREATE TABLE MOUNT_POLICY("
+  "  MOUNT_POLICY_NAME        VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
+  "  ARCHIVE_PRIORITY         INTEGER      CONSTRAINT MOUNT_POLICY_AP_NN   NOT NULL,"
+  "  ARCHIVE_MIN_REQUEST_AGE  INTEGER      CONSTRAINT MOUNT_POLICY_AMRA_NN NOT NULL,"
+  "  RETRIEVE_PRIORITY        INTEGER      CONSTRAINT MOUNT_POLICY_RP_NN   NOT NULL,"
+  "  RETRIEVE_MIN_REQUEST_AGE INTEGER      CONSTRAINT MOUNT_POLICY_RMRA_NN NOT NULL,"
+  "  MAX_DRIVES_ALLOWED       INTEGER      CONSTRAINT MOUNT_POLICY_MDA_NN  NOT NULL,"
+  "  USER_COMMENT             VARCHAR(1000)   CONSTRAINT MOUNT_POLICY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR(100)    CONSTRAINT MOUNT_POLICY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR(100)    CONSTRAINT MOUNT_POLICY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        INTEGER      CONSTRAINT MOUNT_POLICY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR(100)    CONSTRAINT MOUNT_POLICY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR(100)    CONSTRAINT MOUNT_POLICY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         INTEGER      CONSTRAINT MOUNT_POLICY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT MOUNT_POLICY_PK PRIMARY KEY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR(100)    CONSTRAINT RQSTER_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_NAME         VARCHAR(100)    CONSTRAINT RQSTER_RULE_RN_NN   NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR(100)    CONSTRAINT RQSTER_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR(1000)   CONSTRAINT RQSTER_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR(100)    CONSTRAINT RQSTER_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR(100)    CONSTRAINT RQSTER_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      INTEGER      CONSTRAINT RQSTER_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR(100)    CONSTRAINT RQSTER_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR(100)    CONSTRAINT RQSTER_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       INTEGER      CONSTRAINT RQSTER_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_NAME),"
+  "  CONSTRAINT RQSTER_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_GROUP_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_GROUP_NAME   VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_RGN_NN  NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR(1000)   CONSTRAINT RQSTER_GRP_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      INTEGER      CONSTRAINT RQSTER_GRP_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       INTEGER      CONSTRAINT RQSTER_GRP_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_GRP_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_GROUP_NAME),"
+  "  CONSTRAINT RQSTER_GRP_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE ARCHIVE_FILE("
+  "  ARCHIVE_FILE_ID         INTEGER      CONSTRAINT ARCHIVE_FILE_AFI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR(100)    CONSTRAINT ARCHIVE_FILE_DIN_NN  NOT NULL,"
+  "  DISK_FILE_ID            VARCHAR(100)    CONSTRAINT ARCHIVE_FILE_DFI_NN  NOT NULL,"
+  "  DISK_FILE_PATH          VARCHAR(2000)   CONSTRAINT ARCHIVE_FILE_DFP_NN  NOT NULL,"
+  "  DISK_FILE_UID           INTEGER      CONSTRAINT ARCHIVE_FILE_DFUID_NN  NOT NULL,"
+  "  DISK_FILE_GID           INTEGER      CONSTRAINT ARCHIVE_FILE_DFGID_NN  NOT NULL,"
+  "  SIZE_IN_BYTES           INTEGER      CONSTRAINT ARCHIVE_FILE_SIB_NN  NOT NULL,"
+  "  CHECKSUM_BLOB           BLOB(200),"
+  "  CHECKSUM_ADLER32        INTEGER      CONSTRAINT ARCHIVE_FILE_CB2_NN  NOT NULL,"
+  "  STORAGE_CLASS_ID        INTEGER      CONSTRAINT ARCHIVE_FILE_SCI_NN  NOT NULL,"
+  "  CREATION_TIME           INTEGER      CONSTRAINT ARCHIVE_FILE_CT2_NN  NOT NULL,"
+  "  RECONCILIATION_TIME     INTEGER      CONSTRAINT ARCHIVE_FILE_RT_NN   NOT NULL,"
+  "  IS_DELETED              CHAR(1)         DEFAULT '0' CONSTRAINT ARCHIVE_FILE_ID_NN NOT NULL,"
+  "  COLLOCATION_HINT        VARCHAR(100),"
+  "  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_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("
+  "  VID                      VARCHAR(100)   CONSTRAINT TAPE_FILE_V_NN    NOT NULL,"
+  "  FSEQ                     INTEGER     CONSTRAINT TAPE_FILE_F_NN    NOT NULL,"
+  "  BLOCK_ID                 INTEGER     CONSTRAINT TAPE_FILE_BI_NN   NOT NULL,"
+  "  LOGICAL_SIZE_IN_BYTES    INTEGER     CONSTRAINT TAPE_FILE_CSIB_NN NOT NULL,"
+  "  COPY_NB                  INTEGER      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
+  "  CREATION_TIME            INTEGER     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
+  "  ARCHIVE_FILE_ID          INTEGER     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  SUPERSEDED_BY_VID        VARCHAR(100),"
+  "  SUPERSEDED_BY_FSEQ       INTEGER    ,"
+  "  WRITE_START_WRAP         INTEGER,"
+  "  WRITE_START_LPOS         INTEGER,"
+  "  WRITE_END_WRAP           INTEGER,"
+  "  WRITE_END_LPOS           INTEGER,"
+  "  READ_START_WRAP          INTEGER,"
+  "  READ_START_LPOS          INTEGER,"
+  "  READ_END_WRAP            INTEGER,"
+  "  READ_END_LPOS            INTEGER,"
+  "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
+  "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
+  "    REFERENCES TAPE(VID),"
+  "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
+  "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
+  "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_SS_VID_FSEQ_FK FOREIGN KEY(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ)"
+  "    REFERENCES TAPE_FILE(VID, FSEQ)"
+  ");"
+  "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
+  "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
+  "CREATE INDEX TAPE_FILE_SBV_SBF_IDX ON TAPE_FILE(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ);"
+  "CREATE TABLE ACTIVITIES_WEIGHTS ("
+  "  DISK_INSTANCE_NAME       VARCHAR(100),"
+  "  ACTIVITY                 VARCHAR(100),"
+  "  WEIGHT                   VARCHAR(100),"
+  "  USER_COMMENT             VARCHAR(1000)   CONSTRAINT ACTIV_WEIGHTS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        INTEGER      CONSTRAINT ACTIV_WEIGHTS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         INTEGER      CONSTRAINT ACTIV_WEIGHTS_LUT_NN  NOT NULL"
+  ");"
+  "CREATE TABLE USAGESTATS ("
+  "  GID                     INTEGER   DEFAULT 0 CONSTRAINT NN_USAGESTATS_GID NOT NULL,"
+  "  TIMESTAMP               INTEGER  DEFAULT 0 CONSTRAINT NN_USAGESTATS_TS NOT NULL,"
+  "  MAXFILEID               INTEGER,"
+  "  FILECOUNT               INTEGER,"
+  "  FILESIZE                INTEGER,"
+  "  SEGCOUNT                INTEGER,"
+  "  SEGSIZE                 INTEGER,"
+  "  SEG2COUNT               INTEGER,"
+  "  SEG2SIZE                INTEGER,"
+  "  CONSTRAINT PK_USAGESTATS_GID_TS PRIMARY KEY (GID, TIMESTAMP)"
+  ");"
+  "CREATE TABLE EXPERIMENTS ("
+  " NAME                     VARCHAR(20),"
+  " GID                      INTEGER CONSTRAINT EXPERIMENTS_GID_PK PRIMARY KEY"
+  ");"
+  "INSERT INTO CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR,"
+  "  SCHEMA_VERSION_MINOR)"
+  "VALUES("
+  "  1,"
+  "  0);"
+      },
+  {"postgres",  "CREATE SEQUENCE ARCHIVE_FILE_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 1"
+  "  NO MAXVALUE"
+  "  MINVALUE 1"
+  "  NO CYCLE"
+  "  CACHE 20;"
+  "CREATE SEQUENCE LOGICAL_LIBRARY_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 1"
+  "  NO MAXVALUE"
+  "  MINVALUE 1"
+  "  NO CYCLE"
+  "  CACHE 20;"
+  "CREATE SEQUENCE STORAGE_CLASS_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 1"
+  "  NO MAXVALUE"
+  "  MINVALUE 1"
+  "  NO CYCLE"
+  "  CACHE 20;"
+  "CREATE SEQUENCE TAPE_POOL_ID_SEQ"
+  "  INCREMENT BY 1"
+  "  START WITH 1"
+  "  NO MAXVALUE"
+  "  MINVALUE 1"
+  "  NO CYCLE"
+  "  CACHE 20;"
+  "CREATE TABLE CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR    NUMERIC(20, 0)      CONSTRAINT CTA_CATALOGUE_SVM1_NN NOT NULL,"
+  "  SCHEMA_VERSION_MINOR    NUMERIC(20, 0)      CONSTRAINT CTA_CATALOGUE_SVM2_NN NOT NULL"
+  ");"
+  "CREATE TABLE ADMIN_USER("
+  "  ADMIN_USER_NAME         VARCHAR(100)    CONSTRAINT ADMIN_USER_AUN_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT ADMIN_USER_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT ADMIN_USER_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT ADMIN_USER_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT ADMIN_USER_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT ADMIN_USER_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT ADMIN_USER_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT ADMIN_USER_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ADMIN_USER_PK PRIMARY KEY(ADMIN_USER_NAME)"
+  ");"
+  "CREATE TABLE DISK_SYSTEM("
+  "  DISK_SYSTEM_NAME        VARCHAR(100)    CONSTRAINT DISK_SYSTEM_DSNM_NN NOT NULL,"
+  "  FILE_REGEXP             VARCHAR(100)    CONSTRAINT DISK_SYSTEM_FR_NN   NOT NULL,"
+  "  FREE_SPACE_QUERY_URL    VARCHAR(1000)   CONSTRAINT DISK_SYSTEM_FSQU_NN NOT NULL,"
+  "  REFRESH_INTERVAL        NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_RI_NN   NOT NULL,"
+  "  TARGETED_FREE_SPACE     NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_TFS_NN  NOT NULL,"
+  "  SLEEP_TIME              NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_ST_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT DISK_SYSTEM_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT DISK_SYSTEM_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT DISK_SYSTEM_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT DISK_SYSTEM_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT DISK_SYSTEM_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT DISK_SYSTEM_LUT_NN  NOT NULL,"
+  "  CONSTRAINT NAME_PK PRIMARY KEY(DISK_SYSTEM_NAME)"
+  ");"
+  "CREATE TABLE STORAGE_CLASS("
+  "  STORAGE_CLASS_ID        NUMERIC(20, 0)      CONSTRAINT STORAGE_CLASS_SCI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR(100)    CONSTRAINT STORAGE_CLASS_DIN_NN  NOT NULL,"
+  "  STORAGE_CLASS_NAME      VARCHAR(100)    CONSTRAINT STORAGE_CLASS_SCN_NN  NOT NULL,"
+  "  NB_COPIES               NUMERIC(3, 0)       CONSTRAINT STORAGE_CLASS_NC_NN   NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT STORAGE_CLASS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT STORAGE_CLASS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT STORAGE_CLASS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT STORAGE_CLASS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT STORAGE_CLASS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT STORAGE_CLASS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT STORAGE_CLASS_LUT_NN  NOT NULL,"
+  "  CONSTRAINT STORAGE_CLASS_PK PRIMARY KEY(STORAGE_CLASS_ID),"
+  "  CONSTRAINT STORAGE_CLASS_DIN_SCN_UN UNIQUE(DISK_INSTANCE_NAME, STORAGE_CLASS_NAME)"
+  ");"
+  "CREATE TABLE TAPE_POOL("
+  "  TAPE_POOL_ID            NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_TPI_NN  NOT NULL,"
+  "  TAPE_POOL_NAME          VARCHAR(100)    CONSTRAINT TAPE_POOL_TPN_NN  NOT NULL,"
+  "  VO                      VARCHAR(100)    CONSTRAINT TAPE_POOL_VO_NN   NOT NULL,"
+  "  NB_PARTIAL_TAPES        NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_NPT_NN  NOT NULL,"
+  "  IS_ENCRYPTED            CHAR(1)         CONSTRAINT TAPE_POOL_IE_NN   NOT NULL,"
+  "  SUPPLY                  VARCHAR(100),"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT TAPE_POOL_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT TAPE_POOL_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT TAPE_POOL_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT TAPE_POOL_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT TAPE_POOL_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT TAPE_POOL_LUT_NN  NOT NULL,"
+  "  CONSTRAINT TAPE_POOL_PK PRIMARY KEY(TAPE_POOL_ID),"
+  "  CONSTRAINT TAPE_POOL_TPN_UN UNIQUE(TAPE_POOL_NAME),"
+  "  CONSTRAINT TAPE_POOL_IS_ENCRYPTED_BOOL_CK CHECK(IS_ENCRYPTED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE ARCHIVE_ROUTE("
+  "  STORAGE_CLASS_ID        NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_SCI_NN  NOT NULL,"
+  "  COPY_NB                 NUMERIC(3, 0)       CONSTRAINT ARCHIVE_ROUTE_CN_NN   NOT NULL,"
+  "  TAPE_POOL_ID            NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_TPI_NN  NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT ARCHIVE_ROUTE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT ARCHIVE_ROUTE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT ARCHIVE_ROUTE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT ARCHIVE_ROUTE_PK PRIMARY KEY(STORAGE_CLASS_ID, COPY_NB),"
+  "  CONSTRAINT ARCHIVE_ROUTE_STORAGE_CLASS_FK FOREIGN KEY(STORAGE_CLASS_ID) REFERENCES STORAGE_CLASS(STORAGE_CLASS_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_TAPE_POOL_FK FOREIGN KEY(TAPE_POOL_ID) REFERENCES TAPE_POOL(TAPE_POOL_ID),"
+  "  CONSTRAINT ARCHIVE_ROUTE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0)"
+  ");"
+  "CREATE TABLE LOGICAL_LIBRARY("
+  "  LOGICAL_LIBRARY_ID      NUMERIC(20, 0)      CONSTRAINT LOGICAL_LIBRARY_LLI_NN  NOT NULL,"
+  "  LOGICAL_LIBRARY_NAME    VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LLN_NN  NOT NULL,"
+  "  IS_DISABLED             CHAR(1)         DEFAULT '0' CONSTRAINT LOGICAL_LIBRARY_ID_NN NOT NULL,"
+  "  USER_COMMENT            VARCHAR(1000)   CONSTRAINT LOGICAL_LIBRARY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME  VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME  VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME       NUMERIC(20, 0)      CONSTRAINT LOGICAL_LIBRARY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT LOGICAL_LIBRARY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT LOGICAL_LIBRARY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT LOGICAL_LIBRARY_PK PRIMARY KEY(LOGICAL_LIBRARY_ID),"
+  "  CONSTRAINT LOGICAL_LIBRARY_LLN UNIQUE(LOGICAL_LIBRARY_NAME),"
+  "  CONSTRAINT LOGICAL_LIBRARY_ID_BOOL_CK CHECK(IS_DISABLED IN ('0', '1'))"
+  ");"
+  "CREATE TABLE TAPE("
+  "  VID                     VARCHAR(100)    CONSTRAINT TAPE_V_NN    NOT NULL,"
+  "  MEDIA_TYPE              VARCHAR(100)    CONSTRAINT TAPE_MT_NN   NOT NULL,"
+  "  VENDOR                  VARCHAR(100)    CONSTRAINT TAPE_V2_NN   NOT NULL,"
+  "  LOGICAL_LIBRARY_ID      NUMERIC(20, 0)      CONSTRAINT TAPE_LLI_NN  NOT NULL,"
+  "  TAPE_POOL_ID            NUMERIC(20, 0)      CONSTRAINT TAPE_TPI_NN  NOT NULL,"
+  "  ENCRYPTION_KEY_NAME     VARCHAR(100),"
+  "  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,"
+  "  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,"
+  "  LABEL_DRIVE             VARCHAR(100),"
+  "  LABEL_TIME              NUMERIC(20, 0)    ,"
+  "  LAST_READ_DRIVE         VARCHAR(100),"
+  "  LAST_READ_TIME          NUMERIC(20, 0)    ,"
+  "  LAST_WRITE_DRIVE        VARCHAR(100),"
+  "  LAST_WRITE_TIME         NUMERIC(20, 0)    ,"
+  "  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)   CONSTRAINT TAPE_UC_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,"
+  "  LAST_UPDATE_USER_NAME   VARCHAR(100)    CONSTRAINT TAPE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME   VARCHAR(100)    CONSTRAINT TAPE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME        NUMERIC(20, 0)      CONSTRAINT TAPE_LUT_NN  NOT NULL,"
+  "  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_IS_ARCHVIED_BOOL_CK CHECK(IS_ARCHIVED IN ('0', '1')),"
+  "  CONSTRAINT TAPE_IS_EXPORTED_BOOL_CK CHECK(IS_EXPORTED IN ('0', '1'))"
+  ");"
+  "CREATE INDEX TAPE_TAPE_POOL_ID_IDX ON TAPE(TAPE_POOL_ID);"
+  "CREATE TABLE MOUNT_POLICY("
+  "  MOUNT_POLICY_NAME        VARCHAR(100)    CONSTRAINT MOUNT_POLICY_MPN_NN  NOT NULL,"
+  "  ARCHIVE_PRIORITY         NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_AP_NN   NOT NULL,"
+  "  ARCHIVE_MIN_REQUEST_AGE  NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_AMRA_NN NOT NULL,"
+  "  RETRIEVE_PRIORITY        NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_RP_NN   NOT NULL,"
+  "  RETRIEVE_MIN_REQUEST_AGE NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_RMRA_NN NOT NULL,"
+  "  MAX_DRIVES_ALLOWED       NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_MDA_NN  NOT NULL,"
+  "  USER_COMMENT             VARCHAR(1000)   CONSTRAINT MOUNT_POLICY_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR(100)    CONSTRAINT MOUNT_POLICY_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR(100)    CONSTRAINT MOUNT_POLICY_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR(100)    CONSTRAINT MOUNT_POLICY_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR(100)    CONSTRAINT MOUNT_POLICY_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         NUMERIC(20, 0)      CONSTRAINT MOUNT_POLICY_LUT_NN  NOT NULL,"
+  "  CONSTRAINT MOUNT_POLICY_PK PRIMARY KEY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR(100)    CONSTRAINT RQSTER_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_NAME         VARCHAR(100)    CONSTRAINT RQSTER_RULE_RN_NN   NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR(100)    CONSTRAINT RQSTER_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR(1000)   CONSTRAINT RQSTER_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR(100)    CONSTRAINT RQSTER_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR(100)    CONSTRAINT RQSTER_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      NUMERIC(20, 0)      CONSTRAINT RQSTER_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR(100)    CONSTRAINT RQSTER_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR(100)    CONSTRAINT RQSTER_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT RQSTER_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_NAME),"
+  "  CONSTRAINT RQSTER_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE REQUESTER_GROUP_MOUNT_RULE("
+  "  DISK_INSTANCE_NAME     VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_DIN_NN  NOT NULL,"
+  "  REQUESTER_GROUP_NAME   VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_RGN_NN  NOT NULL,"
+  "  MOUNT_POLICY_NAME      VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_MPN_NN  NOT NULL,"
+  "  USER_COMMENT           VARCHAR(1000)   CONSTRAINT RQSTER_GRP_RULE_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME      NUMERIC(20, 0)      CONSTRAINT RQSTER_GRP_RULE_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME  VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME  VARCHAR(100)    CONSTRAINT RQSTER_GRP_RULE_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME       NUMERIC(20, 0)      CONSTRAINT RQSTER_GRP_RULE_LUT_NN  NOT NULL,"
+  "  CONSTRAINT RQSTER_GRP_RULE_PK PRIMARY KEY(DISK_INSTANCE_NAME, REQUESTER_GROUP_NAME),"
+  "  CONSTRAINT RQSTER_GRP_RULE_MNT_PLC_FK FOREIGN KEY(MOUNT_POLICY_NAME)"
+  "    REFERENCES MOUNT_POLICY(MOUNT_POLICY_NAME)"
+  ");"
+  "CREATE TABLE ARCHIVE_FILE("
+  "  ARCHIVE_FILE_ID         NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_AFI_NN  NOT NULL,"
+  "  DISK_INSTANCE_NAME      VARCHAR(100)    CONSTRAINT ARCHIVE_FILE_DIN_NN  NOT NULL,"
+  "  DISK_FILE_ID            VARCHAR(100)    CONSTRAINT ARCHIVE_FILE_DFI_NN  NOT NULL,"
+  "  DISK_FILE_PATH          VARCHAR(2000)   CONSTRAINT ARCHIVE_FILE_DFP_NN  NOT NULL,"
+  "  DISK_FILE_UID           NUMERIC(10, 0)      CONSTRAINT ARCHIVE_FILE_DFUID_NN  NOT NULL,"
+  "  DISK_FILE_GID           NUMERIC(10, 0)      CONSTRAINT ARCHIVE_FILE_DFGID_NN  NOT NULL,"
+  "  SIZE_IN_BYTES           NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_SIB_NN  NOT NULL,"
+  "  CHECKSUM_BLOB           BYTEA,"
+  "  CHECKSUM_ADLER32        NUMERIC(10, 0)      CONSTRAINT ARCHIVE_FILE_CB2_NN  NOT NULL,"
+  "  STORAGE_CLASS_ID        NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_SCI_NN  NOT NULL,"
+  "  CREATION_TIME           NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_CT2_NN  NOT NULL,"
+  "  RECONCILIATION_TIME     NUMERIC(20, 0)      CONSTRAINT ARCHIVE_FILE_RT_NN   NOT NULL,"
+  "  IS_DELETED              CHAR(1)         DEFAULT '0' CONSTRAINT ARCHIVE_FILE_ID_NN NOT NULL,"
+  "  COLLOCATION_HINT        VARCHAR(100),"
+  "  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_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("
+  "  VID                      VARCHAR(100)   CONSTRAINT TAPE_FILE_V_NN    NOT NULL,"
+  "  FSEQ                     NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_F_NN    NOT NULL,"
+  "  BLOCK_ID                 NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_BI_NN   NOT NULL,"
+  "  LOGICAL_SIZE_IN_BYTES    NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CSIB_NN NOT NULL,"
+  "  COPY_NB                  NUMERIC(3, 0)      CONSTRAINT TAPE_FILE_CN_NN   NOT NULL,"
+  "  CREATION_TIME            NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_CT_NN   NOT NULL,"
+  "  ARCHIVE_FILE_ID          NUMERIC(20, 0)     CONSTRAINT TAPE_FILE_AFI_NN  NOT NULL,"
+  "  SUPERSEDED_BY_VID        VARCHAR(100),"
+  "  SUPERSEDED_BY_FSEQ       NUMERIC(20, 0)    ,"
+  "  WRITE_START_WRAP         NUMERIC(5, 0),"
+  "  WRITE_START_LPOS         NUMERIC(10, 0),"
+  "  WRITE_END_WRAP           NUMERIC(5, 0),"
+  "  WRITE_END_LPOS           NUMERIC(10, 0),"
+  "  READ_START_WRAP          NUMERIC(5, 0),"
+  "  READ_START_LPOS          NUMERIC(10, 0),"
+  "  READ_END_WRAP            NUMERIC(5, 0),"
+  "  READ_END_LPOS            NUMERIC(10, 0),"
+  "  CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),"
+  "  CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)"
+  "    REFERENCES TAPE(VID),"
+  "  CONSTRAINT TAPE_FILE_ARCHIVE_FILE_FK FOREIGN KEY(ARCHIVE_FILE_ID)"
+  "    REFERENCES ARCHIVE_FILE(ARCHIVE_FILE_ID),"
+  "  CONSTRAINT TAPE_FILE_VID_BLOCK_ID_UN UNIQUE(VID, BLOCK_ID),"
+  "  CONSTRAINT TAPE_FILE_COPY_NB_GT_ZERO CHECK(COPY_NB > 0),"
+  "  CONSTRAINT TAPE_FILE_SS_VID_FSEQ_FK FOREIGN KEY(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ)"
+  "    REFERENCES TAPE_FILE(VID, FSEQ)"
+  ");"
+  "CREATE INDEX TAPE_FILE_VID_IDX ON TAPE_FILE(VID);"
+  "CREATE INDEX TAPE_FILE_ARCHIVE_FILE_ID_IDX ON TAPE_FILE(ARCHIVE_FILE_ID);"
+  "CREATE INDEX TAPE_FILE_SBV_SBF_IDX ON TAPE_FILE(SUPERSEDED_BY_VID, SUPERSEDED_BY_FSEQ);"
+  "CREATE TABLE ACTIVITIES_WEIGHTS ("
+  "  DISK_INSTANCE_NAME       VARCHAR(100),"
+  "  ACTIVITY                 VARCHAR(100),"
+  "  WEIGHT                   VARCHAR(100),"
+  "  USER_COMMENT             VARCHAR(1000)   CONSTRAINT ACTIV_WEIGHTS_UC_NN   NOT NULL,"
+  "  CREATION_LOG_USER_NAME   VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_CLUN_NN NOT NULL,"
+  "  CREATION_LOG_HOST_NAME   VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_CLHN_NN NOT NULL,"
+  "  CREATION_LOG_TIME        NUMERIC(20, 0)      CONSTRAINT ACTIV_WEIGHTS_CLT_NN  NOT NULL,"
+  "  LAST_UPDATE_USER_NAME    VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_LUUN_NN NOT NULL,"
+  "  LAST_UPDATE_HOST_NAME    VARCHAR(100)    CONSTRAINT ACTIV_WEIGHTS_LUHN_NN NOT NULL,"
+  "  LAST_UPDATE_TIME         NUMERIC(20, 0)      CONSTRAINT ACTIV_WEIGHTS_LUT_NN  NOT NULL"
+  ");"
+  "CREATE TABLE USAGESTATS ("
+  "  GID                     NUMERIC(10, 0)   DEFAULT 0 CONSTRAINT NN_USAGESTATS_GID NOT NULL,"
+  "  TIMESTAMP               NUMERIC(20, 0)  DEFAULT 0 CONSTRAINT NN_USAGESTATS_TS NOT NULL,"
+  "  MAXFILEID               NUMERIC(20, 0),"
+  "  FILECOUNT               NUMERIC(20, 0),"
+  "  FILESIZE                NUMERIC(20, 0),"
+  "  SEGCOUNT                NUMERIC(20, 0),"
+  "  SEGSIZE                 NUMERIC(20, 0),"
+  "  SEG2COUNT               NUMERIC(20, 0),"
+  "  SEG2SIZE                NUMERIC(20, 0),"
+  "  CONSTRAINT PK_USAGESTATS_GID_TS PRIMARY KEY (GID, TIMESTAMP)"
+  ");"
+  "CREATE TABLE EXPERIMENTS ("
+  " NAME                     VARCHAR(20),"
+  " GID                      NUMERIC(10, 0) CONSTRAINT EXPERIMENTS_GID_PK PRIMARY KEY"
+  ");"
+  "INSERT INTO CTA_CATALOGUE("
+  "  SCHEMA_VERSION_MAJOR,"
+  "  SCHEMA_VERSION_MINOR)"
+  "VALUES("
+  "  1,"
+  "  0);"
+  "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;"
+      },
+    }
+  },
+};
+	  
+}}
+
diff --git a/catalogue/AllCatalogueSchema.hpp.in b/catalogue/AllCatalogueSchema.hpp.in
new file mode 100644
index 0000000000000000000000000000000000000000..689c8edf24a8adc9867dd421ce0fe2a93139d1fb
--- /dev/null
+++ b/catalogue/AllCatalogueSchema.hpp.in
@@ -0,0 +1,33 @@
+/**
+ * The CERN Tape Archive (CTA) project
+ * Copyright © 2018 CERN
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include <map>
+
+namespace cta{
+namespace catalogue{
+  
+  class AllCatalogueSchema {
+    public:
+      static std::map<std::string,std::map<std::string,std::string>> mapSchema; 
+  };
+  
+  std::map<std::string,std::map<std::string,std::string>> AllCatalogueSchema::mapSchema = ALL_SCHEMA_MAP
+	  
+}}
+
diff --git a/catalogue/CMakeLists.txt b/catalogue/CMakeLists.txt
index b0074423852bf6b7baaf045845fdd49472c5dfba..7d93f31a63b3ffeecb08a7bde5ebff5b9adac635 100644
--- a/catalogue/CMakeLists.txt
+++ b/catalogue/CMakeLists.txt
@@ -189,6 +189,10 @@ add_custom_command(OUTPUT PostgresCatalogueSchema.cpp
   COMMAND sed -e '/CTA_SQL_SCHEMA/r postgres_catalogue_schema.cpp' ${CMAKE_CURRENT_SOURCE_DIR}/PostgresCatalogueSchema.before_SQL.cpp > PostgresCatalogueSchema.cpp
   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/PostgresCatalogueSchema.before_SQL.cpp postgres_catalogue_schema.cpp)
 
+add_custom_target(
+  CreateAllSchemasMap ALL 
+  ${CMAKE_CURRENT_SOURCE_DIR}/CreateAllSchemasCppFile.sh ${CMAKE_CURRENT_SOURCE_DIR}
+)
 
 set(IN_MEMORY_CATALOGUE_UNIT_TESTS_LIB_SRC_FILES
   CatalogueTest.cpp
@@ -286,6 +290,7 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cta-catalogue-admin-user-create.1cta D
 
 add_executable(cta-catalogue-schema-verify
   SQLiteSchemaInserter.cpp
+  SchemaSqlStatementsReader.cpp
   SchemaComparer.cpp
   SQLiteSchemaComparer.cpp
   DbToSQLiteStatementTransformer.cpp
diff --git a/catalogue/CreateAllSchemasCppFile.sh b/catalogue/CreateAllSchemasCppFile.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6033382bbcdea56b62c7a98b60660b4ed3daf729
--- /dev/null
+++ b/catalogue/CreateAllSchemasCppFile.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+# 
+# This script is ran by cmake in order to generate the C++ map that will store all schemas in it.
+# Takes as argument the disk emplacement where the .sql files are located
+# Example :
+#        {
+#        {"1.0",
+#            {
+#                {"oracle","oracle sqlStatements 1.0"},
+#                {"sqlite","sqlite sqlStatements 1.0"},
+#            }
+#        },
+#        {"1.1",
+#            {
+#                {"oracle","oracle sqlStatements 1.1"},
+#                {"sqlite","sqlite sqlStatements 1.1"},
+#            }
+#        },
+#        
+#    };
+#
+die() {
+  echo "$@" 1>&2
+  test -z $TAILPID || kill ${TAILPID} &> /dev/null
+  exit 1
+}
+
+databaseTypes=('oracle' 'mysql' 'sqlite' 'postgres')
+schemaPostfix='_catalogue_schema.sql'
+
+cd $1
+
+schemaVersionsDirectories=`find . -type d -regex '^./[0-9]+\.[0-9]+$'`
+
+mapSchemaCode='
+{
+'
+for schemaVersionDir in $schemaVersionsDirectories
+do
+  #extract schema version
+  schemaVersion=${schemaVersionDir#"./"}
+  mapSchemaCode+="  {\"$schemaVersion\",
+    {
+    "
+  for databaseType in ${databaseTypes[@]}
+  do
+    schemaSqlFilePath="$schemaVersionDir/$databaseType$schemaPostfix"
+    notTranslatedSchemaSQL=`cat $schemaSqlFilePath` || die "Unable to open file $schemaSqlFilePath"
+    schemaSql=`cat $schemaVersionDir/$databaseType$schemaPostfix | sed 's/^/\ \ \"/' | sed 's/$/\"/'`
+    mapSchemaCode+="  {\"$databaseType\",$schemaSql
+      },
+"
+  done
+  mapSchemaCode+="    }\n"
+  mapSchemaCode+="  },\n"
+done
+mapSchemaCode+="};"
+awk -v r="$mapSchemaCode" '{gsub(/ALL_SCHEMA_MAP/,r)}1' ./AllCatalogueSchema.hpp.in > ./AllCatalogueSchema.hpp || die "Unable to create the map containing all catalogue schemas"
diff --git a/catalogue/DbToSQLiteStatementTransformer.cpp b/catalogue/DbToSQLiteStatementTransformer.cpp
index 4e090c9a3b153aea9a65df89714d40a901e4fcab..2f0279b2a5a71421c049440cf9f77acee253ec8a 100644
--- a/catalogue/DbToSQLiteStatementTransformer.cpp
+++ b/catalogue/DbToSQLiteStatementTransformer.cpp
@@ -51,7 +51,7 @@ CreateGlobalTempTableToSQLiteStatementTransformer::CreateGlobalTempTableToSQLite
 
 std::string CreateGlobalTempTableToSQLiteStatementTransformer::transform(){
   utils::searchAndReplace(m_statement,"GLOBAL TEMPORARY ","");
-  utils::searchAndReplace(m_statement,"\nON COMMIT DELETE ROWS;",";");
+  utils::searchAndReplace(m_statement,"ON COMMIT DELETE ROWS;",";");
   return m_statement;
 }
 
diff --git a/catalogue/SQLiteSchemaComparer.cpp b/catalogue/SQLiteSchemaComparer.cpp
index 8e8b1b5128c8445dad01864b713eb96fcd0fb5a9..f7f9b1a5786801fc0d81615603fa85c9e2ff1b19 100644
--- a/catalogue/SQLiteSchemaComparer.cpp
+++ b/catalogue/SQLiteSchemaComparer.cpp
@@ -25,13 +25,12 @@
 namespace cta {
 namespace catalogue {
   
-SQLiteSchemaComparer::SQLiteSchemaComparer(const cta::rdbms::Login::DbType &catalogueDbType, rdbms::Conn &catalogueConn, const std::string & allSchemasVersionPath): SchemaComparer(catalogueDbType,catalogueConn),m_allSchemasVersionPath(allSchemasVersionPath) {
+SQLiteSchemaComparer::SQLiteSchemaComparer(const cta::rdbms::Login::DbType &catalogueDbType, rdbms::Conn &catalogueConn): SchemaComparer(catalogueDbType,catalogueConn) {
   log::DummyLogger dl("dummy","dummy");
   auto login = rdbms::Login::parseString("in_memory");
   m_sqliteConnPool.reset(new rdbms::ConnPool(login,1));
   m_sqliteConn = std::move(m_sqliteConnPool->getConn());
   m_sqliteSchemaMetadataGetter.reset(new SQLiteCatalogueMetadataGetter(m_sqliteConn));
-  insertSchemaInSQLite();
 }
 
 SQLiteSchemaComparer::~SQLiteSchemaComparer() {
@@ -41,6 +40,7 @@ SQLiteSchemaComparer::~SQLiteSchemaComparer() {
 }
 
 SchemaComparerResult SQLiteSchemaComparer::compareAll(){
+  insertSchemaInSQLite();
   SchemaComparerResult res;
   res += compareTables();
   res += compareIndexes();
@@ -48,6 +48,7 @@ SchemaComparerResult SQLiteSchemaComparer::compareAll(){
 }
 
 SchemaComparerResult SQLiteSchemaComparer::compareTables(){
+  insertSchemaInSQLite();
   std::list<std::string> catalogueTables = m_catalogueMetadataGetter->getTableNames();
   std::list<std::string> schemaTables = m_sqliteSchemaMetadataGetter->getTableNames();
   SchemaComparerResult res = compareTables(catalogueTables,schemaTables);
@@ -55,11 +56,19 @@ SchemaComparerResult SQLiteSchemaComparer::compareTables(){
 }
 
 void SQLiteSchemaComparer::insertSchemaInSQLite() {
-  cta::catalogue::SQLiteSchemaInserter schemaInserter(m_catalogueSchemaVersion,m_dbType,m_allSchemasVersionPath,m_sqliteConn);
-  schemaInserter.insert();
+  if(!m_isSchemaInserted){
+    if(m_schemaSqlStatementsReader != nullptr){
+      cta::catalogue::SQLiteSchemaInserter schemaInserter(m_sqliteConn);
+      schemaInserter.insert(m_schemaSqlStatementsReader->getStatements());
+    } else {
+      throw cta::exception::Exception("In SQLiteSchemaComparer::insertSchemaInSQLite(): unable to insert schema in sqlite because no SchemaSqlStatementReader has been set.");
+    }
+  }
+  m_isSchemaInserted = true;
 }
 
 SchemaComparerResult SQLiteSchemaComparer::compareIndexes(){
+  insertSchemaInSQLite();
   std::list<std::string> catalogueIndexes = m_catalogueMetadataGetter->getIndexNames();
   std::list<std::string> schemaIndexes = m_sqliteSchemaMetadataGetter->getIndexNames();
   return compareItems("INDEX", catalogueIndexes, schemaIndexes);
diff --git a/catalogue/SQLiteSchemaComparer.hpp b/catalogue/SQLiteSchemaComparer.hpp
index 4023bc98cde7700b503c52f88647f26de3304ea6..06a325dd310e3d46caac6b1f3c7f57705c5268f2 100644
--- a/catalogue/SQLiteSchemaComparer.hpp
+++ b/catalogue/SQLiteSchemaComparer.hpp
@@ -31,9 +31,8 @@ public:
    * Constructs a SQLiteSchemaComparer
    * @param catalogueDbType
    * @param catalogueConn
-   * @param allSchemasVersionPath
    */
-  SQLiteSchemaComparer(const cta::rdbms::Login::DbType &catalogueDbType, rdbms::Conn &catalogueConn, const std::string & allSchemasVersionPath);
+  SQLiteSchemaComparer(const cta::rdbms::Login::DbType &catalogueDbType, rdbms::Conn &catalogueConn);
   /**
    * Compare the catalogue schema against the InMemory SQLite catalogue schema
    * @return a SchemaComparerResult object that will contain the differences if there are some
@@ -53,7 +52,7 @@ private:
   rdbms::Conn m_sqliteConn;
   std::unique_ptr<rdbms::ConnPool> m_sqliteConnPool;
   std::unique_ptr<SQLiteCatalogueMetadataGetter> m_sqliteSchemaMetadataGetter;
-  const std::string m_allSchemasVersionPath;
+  bool m_isSchemaInserted = false;
 };
 
 }}
\ No newline at end of file
diff --git a/catalogue/SQLiteSchemaInserter.cpp b/catalogue/SQLiteSchemaInserter.cpp
index 5f8ce117d1a1b49f034666e4098d8d74a8bd2614..41c00339419a4f456d21f6b23e9b6a185bb8842f 100644
--- a/catalogue/SQLiteSchemaInserter.cpp
+++ b/catalogue/SQLiteSchemaInserter.cpp
@@ -27,85 +27,27 @@
 namespace cta {
 namespace catalogue {
   
-SQLiteSchemaInserter::SQLiteSchemaInserter(const std::string & schemaVersion, const cta::rdbms::Login::DbType &catalogueDbType, const std::string &allSchemasVersionPath,rdbms::Conn &sqliteConn):m_schemaVersion(schemaVersion),m_dbType(catalogueDbType),m_allSchemasVersionPath(allSchemasVersionPath), m_sqliteCatalogueConn(sqliteConn){}
+SQLiteSchemaInserter::SQLiteSchemaInserter(rdbms::Conn &sqliteConn): m_sqliteCatalogueConn(sqliteConn){}
 
 SQLiteSchemaInserter::~SQLiteSchemaInserter() {}
 
-void SQLiteSchemaInserter::insert() {
-  //Get all the statements from the correct .sql files
-  std::list<std::string> statements = getAllStatementsFromSchema(readSchemaFromFile());
+void SQLiteSchemaInserter::insert(const std::list<std::string> &schemaStatements) {
   std::list<std::string> sqliteStatements;
-  for(auto& stmt: statements){
-    //Transform the statements in order to make them compatible with the SQLite database
-    std::string sqliteStatement = DbToSQLiteStatementTransformerFactory::create(stmt)->transform();
-    if(!sqliteStatement.empty())
-      sqliteStatements.emplace_back(sqliteStatement);
+  //Transform the statements in order to make them compatible with the SQLite database 
+  for(auto& schemaStatement: schemaStatements){
+    std::string sqliteTransformedStatement = DbToSQLiteStatementTransformerFactory::create(schemaStatement)->transform();
+    if(!sqliteTransformedStatement.empty()){
+      sqliteStatements.emplace_back(sqliteTransformedStatement);
+    }
   }
   executeStatements(sqliteStatements);
 }
 
-void SQLiteSchemaInserter::executeStatements(const std::list<std::string> & stmts){
-  for(auto& sqliteStatement: stmts){
+void SQLiteSchemaInserter::executeStatements(const std::list<std::string>& sqliteStatements){
+  for(auto &sqliteStatement: sqliteStatements){
     auto stmt = m_sqliteCatalogueConn.createStmt(sqliteStatement);
     stmt.executeNonQuery();
   }
 }
 
-std::list<std::string> SQLiteSchemaInserter::getAllStatementsFromSchema(const std::string &schema){
-  std::list<std::string> statements;
-  std::string::size_type searchPos = 0;
-  std::string::size_type findResult = std::string::npos;
-  try {
-    while(std::string::npos != (findResult = schema.find(';', searchPos))) {
-      // Calculate the length of the current statement without the trailing ';'
-      const std::string::size_type stmtLen = findResult - searchPos;
-      const std::string sqlStmt = utils::trimString(schema.substr(searchPos, stmtLen));
-      searchPos = findResult + 1;
-
-      if(0 < sqlStmt.size()) { // Ignore empty statements
-        statements.push_back(sqlStmt+";");
-      }
-    }
-  } catch(exception::Exception &ex) {
-    throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
-  }
-  return statements;
-}
-
-std::string SQLiteSchemaInserter::readSchemaFromFile() {
-  std::string schemaFilePath = getSchemaFilePath();
-  std::ifstream schemaFile(schemaFilePath);
-  if(schemaFile.fail()){
-    throw cta::exception::Exception("In SQLiteSchemaInserter::readSchemaFromFile, unable to open the file located in "+schemaFilePath);
-  }
-  std::string content((std::istreambuf_iterator<char>(schemaFile)),(std::istreambuf_iterator<char>()));
-  return content;
-}
-
-std::string SQLiteSchemaInserter::getSchemaFilePath() {
-  return m_allSchemasVersionPath+m_schemaVersion+"/"+getDatabaseType()+c_catalogueFileNameTrailer;
-}
-
-std::string SQLiteSchemaInserter::getDatabaseType() {
-  switch(m_dbType){
-  case rdbms::Login::DBTYPE_IN_MEMORY:
-  case rdbms::Login::DBTYPE_SQLITE:
-    return "sqlite";
-  case rdbms::Login::DBTYPE_POSTGRESQL:
-    return "postgres";
-  case rdbms::Login::DBTYPE_MYSQL:
-    return "mysql";
-  case rdbms::Login::DBTYPE_ORACLE:
-    return "oracle";
-  case rdbms::Login::DBTYPE_NONE:
-    throw exception::Exception("The database type should not be DBTYPE_NONE");
-  default:
-    {
-      exception::Exception ex;
-      ex.getMessage() << "Unknown database type: value=" << m_dbType;
-      throw ex;
-    }
-  }
-}
-
 }}
\ No newline at end of file
diff --git a/catalogue/SQLiteSchemaInserter.hpp b/catalogue/SQLiteSchemaInserter.hpp
index 2760c66845a0525a9c507d663a72d52d65813682..8dab234f509039851d56439e73fb4b59be4fbc1f 100644
--- a/catalogue/SQLiteSchemaInserter.hpp
+++ b/catalogue/SQLiteSchemaInserter.hpp
@@ -23,59 +23,26 @@
 namespace cta {
 namespace catalogue {
   /**
-   * This class is used to create a InMemory SQLiteSchema from .sql files 
-   * located in allSchemasVersionPath (example : /catalogue/1.0/dbtype_catalogue_schema.sql)
+   * This class is used to create a InMemory SQLiteSchema from sql statements
    * 
-   * @param schemaVersion the schema version to insert in order to look in the correct folder within allSchemasVersionPath
-   * @param catalogueDbType the dbType of the schema to insert in the SQLiteSchema
-   * @param allSchemasVersionPath the directory containing all the versions of the catalogue schema
    * @param sqliteConn the connection of the InMemory SQLite schema
    */
   class SQLiteSchemaInserter {
   public:
     /**
      * Constructor
-     * @param schemaVersion the schema version to insert in order to look in the correct folder within allSchemasVersionPath
-     * @param catalogueDbType the dbType of the schema to insert in the SQLiteSchema
-     * @param allSchemasVersionPath the directory containing all the versions of the catalogue schema
      * @param sqliteConn the connection of the InMemory SQLite schema
      */
-    SQLiteSchemaInserter(const std::string & schemaVersion, const cta::rdbms::Login::DbType &catalogueDbType, const std::string &allSchemasVersionPath,rdbms::Conn &sqliteConn);
+    SQLiteSchemaInserter(rdbms::Conn &sqliteConn);
     /**
-     * Insert the schema corresponding to the version and the database type into the
-     * InMemory SQLite database accessible via the one given in the constructor
+     * Transform and insert the schema statements passed in parameter into the
+     * InMemory SQLite database
      */
-    void insert();    
+    void insert(const std::list<std::string> &schemaStatements);    
     virtual ~SQLiteSchemaInserter();
-  private:
-    const std::string c_catalogueFileNameTrailer = "_catalogue_schema.sql";
     
-    std::string m_schemaVersion;
-    cta::rdbms::Login::DbType m_dbType;
-    std::string m_allSchemasVersionPath;
+  private:
     cta::rdbms::Conn & m_sqliteCatalogueConn;
-    /**
-     * Put the schema located in SCHEMA_VERSION/dbType_catalogue_schema.sql
-     * @return the string containing the .sql statements for the creation of the schema
-     */
-    std::string readSchemaFromFile();
-    /**
-     * Separates the statements and put them in a std::list<std::string> 
-     * @param schema the sql statements put all together
-     * @return a list containing separated statements from the schema passed in parameter
-     */
-    std::list<std::string> getAllStatementsFromSchema(const std::string &schema);
-    /**
-     * Returns the string corresponding to the database type
-     * This method is used to determine the correct .sql file to create the InMemory SQLite database
-     * @return the string corresponding to the database type
-     */
-    std::string getDatabaseType();
-    /**
-     * Returns the path of the .sql file that will be executed to create the InMemory SQLite database
-     * @return 
-     */
-    std::string getSchemaFilePath();
     /**
      * Execute all the statements passed in parameter against the InMemory SQLite database 
      * @param statements the statements to execute in the InMemory SQLite database
diff --git a/catalogue/SchemaChecker.cpp b/catalogue/SchemaChecker.cpp
index 2a6e10c058a18e371dd16715e4149442906bcb5d..5e6b7bba0f1542edf585a8bb684d18c7c77aa545 100644
--- a/catalogue/SchemaChecker.cpp
+++ b/catalogue/SchemaChecker.cpp
@@ -28,8 +28,15 @@ SchemaChecker::SchemaChecker(rdbms::Login::DbType dbType,cta::rdbms::Conn &conn)
 SchemaChecker::~SchemaChecker() {
 }
 
-void SchemaChecker::useSQLiteSchemaComparer(const std::string &allSchemasVersionPath){
-  m_schemaComparer.reset(new SQLiteSchemaComparer(m_dbType,m_catalogueConn,allSchemasVersionPath));
+void SchemaChecker::useSQLiteSchemaComparer(const cta::optional<std::string> allSchemasVersionsDirectory){
+  m_schemaComparer.reset(new SQLiteSchemaComparer(m_dbType,m_catalogueConn));
+   std::unique_ptr<SchemaSqlStatementsReader> schemaSqlStatementsReader;
+  if(allSchemasVersionsDirectory){
+    schemaSqlStatementsReader.reset(new DirectoryVersionsSqlStatementsReader(m_dbType,m_schemaComparer->getCatalogueVersion(),allSchemasVersionsDirectory.value()));
+  } else {
+    schemaSqlStatementsReader.reset(new MapSqlStatementsReader(m_dbType,m_schemaComparer->getCatalogueVersion()));
+  }
+  m_schemaComparer->setSchemaSqlStatementsReader(std::move(schemaSqlStatementsReader));
 }
 
 SchemaChecker::Status SchemaChecker::compareSchema(){
diff --git a/catalogue/SchemaChecker.hpp b/catalogue/SchemaChecker.hpp
index 0e25a75f6cfedb9db0888acef32e8ba0335d8ff5..60d842cfaedf72ac02d70b7ac4ac3e521b74dbae 100644
--- a/catalogue/SchemaChecker.hpp
+++ b/catalogue/SchemaChecker.hpp
@@ -61,18 +61,9 @@ public:
    * statements defined in the allSchemasDirectoryPath and will compare what is in SQLite with 
    * what is in the catalogue database.
    * 
-   * @param allSchemasDirectoryPath the path where all the schemas sql files are located.
-   * This directory should contains all the directories containing the schema creation script specific to a schema VERSION
-   * Example of the content of the directory :
-   * catalogue
-   * |-- 1.0
-   * |  |-- oracle_catalogue_schema.sql
-   * |  |-- postgres_catalogue_schema.sql
-   * |  |....
-   * |-- 1.1
-   * |  |-- ...
+   * @param allSchemaVersionsDirectoryPath the schema sql statement reader used to get the schema
    */
-  void useSQLiteSchemaComparer(const std::string &allSchemasDirectoryPath);
+  void useSQLiteSchemaComparer(cta::optional<std::string> allSchemaVersionsDirectoryPath);
   /**
    * Compare the schema by using a SchemaComparer
    * @throws Exception if no SchemaComparer has been set.
diff --git a/catalogue/SchemaComparer.cpp b/catalogue/SchemaComparer.cpp
index 392bda9ad02a2c90f5ad0a10cf3ffd07d992c627..f8a313aa50120c525ad37b4440af53424b3c60f2 100644
--- a/catalogue/SchemaComparer.cpp
+++ b/catalogue/SchemaComparer.cpp
@@ -35,6 +35,10 @@ std::string SchemaComparer::getCatalogueVersion(){
   return m_catalogueSchemaVersion;
 }
 
+void SchemaComparer::setSchemaSqlStatementsReader(std::unique_ptr<SchemaSqlStatementsReader> schemaSqlStatementsReader){
+  m_schemaSqlStatementsReader = std::move(schemaSqlStatementsReader);
+}
+
 SchemaComparer::~SchemaComparer() {
 }
 
diff --git a/catalogue/SchemaComparer.hpp b/catalogue/SchemaComparer.hpp
index a9a0d34752cbb84cadcf0af5c4b9bf299066e156..0e0d18054ffd7222c6b703fb89d6e72a6d936bd6 100644
--- a/catalogue/SchemaComparer.hpp
+++ b/catalogue/SchemaComparer.hpp
@@ -27,6 +27,7 @@
 #include "rdbms/ConnPool.hpp"
 #include "SchemaComparerResult.hpp"
 #include "CatalogueMetadataGetter.hpp"
+#include "SchemaSqlStatementsReader.hpp"
 
 namespace cta {
 namespace catalogue {
@@ -67,11 +68,19 @@ public:
    * @return the catalogue version of the schema located in the database to compare
    */
   std::string getCatalogueVersion();
+  
+  /**
+   * Sets the way the schema sql statements will be read to do the schemas comparison
+   * @param schemaSqlStatementsReader the reader used to get the schema sql statements in order to do schema comparison
+   */
+  void setSchemaSqlStatementsReader(std::unique_ptr<SchemaSqlStatementsReader> schemaSqlStatementsReader);
+  
 protected:
   const cta::rdbms::Login::DbType &m_dbType;
   std::string m_catalogueSchemaVersion;
   cta::rdbms::Conn &m_catalogueConn;
   std::unique_ptr<cta::catalogue::CatalogueMetadataGetter> m_catalogueMetadataGetter;
+  std::unique_ptr<SchemaSqlStatementsReader> m_schemaSqlStatementsReader;
   bool m_compareTableConstraints;
 };
 
diff --git a/catalogue/SchemaSqlStatementsReader.cpp b/catalogue/SchemaSqlStatementsReader.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..254d5c07dd49b117616020b83df06e3605f3cb89
--- /dev/null
+++ b/catalogue/SchemaSqlStatementsReader.cpp
@@ -0,0 +1,164 @@
+/**
+ * The CERN Tape Archive (CTA) project
+ * Copyright © 2018 CERN
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <memory>
+#include <fstream>
+
+#include "SchemaSqlStatementsReader.hpp"
+#include "SqliteCatalogueSchema.hpp"
+#include "PostgresCatalogueSchema.hpp"
+#include "MysqlCatalogueSchema.hpp"
+#include "OracleCatalogueSchema.hpp"
+#include "common/exception/Exception.hpp"
+#include "common/utils/utils.hpp"
+
+#include "AllCatalogueSchema.hpp"
+
+namespace cta{ namespace catalogue{
+  
+//////////////////////////////////////////////////////////////////
+// SchemaSqlStatementsReader
+//////////////////////////////////////////////////////////////////
+SchemaSqlStatementsReader::SchemaSqlStatementsReader(const cta::rdbms::Login::DbType dbType):m_dbType(dbType) {
+}
+
+SchemaSqlStatementsReader::SchemaSqlStatementsReader(const SchemaSqlStatementsReader& orig) {
+  m_dbType = orig.m_dbType;
+}
+
+SchemaSqlStatementsReader::~SchemaSqlStatementsReader() {
+}
+
+std::list<std::string> SchemaSqlStatementsReader::getStatements(){
+  std::unique_ptr<CatalogueSchema> schema;
+  switch(m_dbType) {
+  case rdbms::Login::DBTYPE_IN_MEMORY:
+  case rdbms::Login::DBTYPE_SQLITE:
+    schema.reset(new SqliteCatalogueSchema);
+    break;
+  case rdbms::Login::DBTYPE_POSTGRESQL:
+    schema.reset(new PostgresCatalogueSchema);
+    break;
+  case rdbms::Login::DBTYPE_MYSQL:
+    schema.reset(new MysqlCatalogueSchema);
+    break;
+  case rdbms::Login::DBTYPE_ORACLE:
+    schema.reset(new OracleCatalogueSchema);
+    break;
+  case rdbms::Login::DBTYPE_NONE:
+    throw exception::Exception("Cannot get statements without a database type");
+  } 
+  return getAllStatementsFromSchema(schema->sql);
+}
+
+std::list<std::string> SchemaSqlStatementsReader::getAllStatementsFromSchema(const std::string& schema){
+  std::list<std::string> statements;
+  std::string::size_type searchPos = 0;
+  std::string::size_type findResult = std::string::npos;
+  try {
+    while(std::string::npos != (findResult = schema.find(';', searchPos))) {
+      // Calculate the length of the current statement without the trailing ';'
+      const std::string::size_type stmtLen = findResult - searchPos;
+      const std::string sqlStmt = utils::trimString(schema.substr(searchPos, stmtLen));
+      searchPos = findResult + 1;
+
+      if(0 < sqlStmt.size()) { // Ignore empty statements
+        statements.push_back(sqlStmt+";");
+      }
+    }
+  } catch(exception::Exception &ex) {
+    throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
+  }
+  return statements;
+}
+
+std::string SchemaSqlStatementsReader::getDatabaseType() {
+  switch(m_dbType){
+  case rdbms::Login::DBTYPE_IN_MEMORY:
+  case rdbms::Login::DBTYPE_SQLITE:
+    return "sqlite";
+  case rdbms::Login::DBTYPE_POSTGRESQL:
+    return "postgres";
+  case rdbms::Login::DBTYPE_MYSQL:
+    return "mysql";
+  case rdbms::Login::DBTYPE_ORACLE:
+    return "oracle";
+  case rdbms::Login::DBTYPE_NONE:
+    throw exception::Exception("The database type should not be DBTYPE_NONE");
+  default:
+    {
+      exception::Exception ex;
+      ex.getMessage() << "Unknown database type: value=" << m_dbType;
+      throw ex;
+    }
+  }
+}
+
+//////////////////////////////////////////////////////////////////
+// DirectoryVersionsSqlStatementsReader
+//////////////////////////////////////////////////////////////////
+DirectoryVersionsSqlStatementsReader::DirectoryVersionsSqlStatementsReader(const cta::rdbms::Login::DbType dbType,const std::string &catalogueVersion,const std::string &allSchemasVersionPath):SchemaSqlStatementsReader(dbType),m_catalogueVersion(catalogueVersion),m_allSchemasVersionPath(allSchemasVersionPath) {
+}
+
+DirectoryVersionsSqlStatementsReader::DirectoryVersionsSqlStatementsReader(const DirectoryVersionsSqlStatementsReader& orig):SchemaSqlStatementsReader(orig) {
+  m_allSchemasVersionPath = orig.m_allSchemasVersionPath;
+  m_catalogueVersion = orig.m_catalogueVersion;
+}
+
+DirectoryVersionsSqlStatementsReader::~DirectoryVersionsSqlStatementsReader() {
+}
+
+std::list<std::string> DirectoryVersionsSqlStatementsReader::getStatements(){
+  return getAllStatementsFromSchema(readSchemaFromFile());
+}
+
+
+std::string DirectoryVersionsSqlStatementsReader::readSchemaFromFile() {
+  std::string schemaFilePath = getSchemaFilePath();
+  std::ifstream schemaFile(schemaFilePath);
+  if(schemaFile.fail()){
+    throw cta::exception::Exception("In DirectoryVersionsSqlStatementsReader::readSchemaFromFile(), unable to open the file located in "+schemaFilePath);
+  }
+  std::string content((std::istreambuf_iterator<char>(schemaFile)),(std::istreambuf_iterator<char>()));
+  return content;
+}
+
+std::string DirectoryVersionsSqlStatementsReader::getSchemaFilePath() {
+  return m_allSchemasVersionPath+m_catalogueVersion+"/"+getDatabaseType()+c_catalogueFileNameTrailer;
+}
+
+
+//////////////////////////////////////////////////////////////////
+// MapSqlStatementsReader
+//////////////////////////////////////////////////////////////////
+MapSqlStatementsReader::MapSqlStatementsReader(const cta::rdbms::Login::DbType dbType, const std::string &catalogueVersion):SchemaSqlStatementsReader(dbType),m_catalogueVersion(catalogueVersion){}
+
+MapSqlStatementsReader::MapSqlStatementsReader(const MapSqlStatementsReader& orig):SchemaSqlStatementsReader(orig) {
+  m_catalogueVersion = orig.m_catalogueVersion;
+}
+
+MapSqlStatementsReader::~MapSqlStatementsReader() {
+}
+
+std::list<std::string> MapSqlStatementsReader::getStatements(){
+  std::string schema = AllCatalogueSchema::mapSchema[m_catalogueVersion][getDatabaseType()];
+  return getAllStatementsFromSchema(schema);
+}
+
+}}
+
diff --git a/catalogue/SchemaSqlStatementsReader.hpp b/catalogue/SchemaSqlStatementsReader.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..07fd04e99e82750a15deed3043d143a49605b787
--- /dev/null
+++ b/catalogue/SchemaSqlStatementsReader.hpp
@@ -0,0 +1,86 @@
+/**
+ * The CERN Tape Archive (CTA) project
+ * Copyright © 2018 CERN
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "rdbms/Login.hpp"
+
+namespace cta{ namespace catalogue {
+  
+class SchemaSqlStatementsReader {
+public:
+  SchemaSqlStatementsReader(const cta::rdbms::Login::DbType dbType);
+  SchemaSqlStatementsReader(const SchemaSqlStatementsReader& orig);
+  virtual ~SchemaSqlStatementsReader();
+  virtual std::list<std::string> getStatements();
+protected:
+  cta::rdbms::Login::DbType m_dbType;
+  /**
+  * Separates the statements and put them in a std::list<std::string> 
+  * @param schema the sql statements put all together
+  * @return a list containing separated statements from the schema passed in parameter
+  */
+  std::list<std::string> getAllStatementsFromSchema(const std::string &schema);
+  /**
+  * Returns the string corresponding to the database type
+  * @return the string corresponding to the database type
+  */
+  std::string getDatabaseType();
+};
+
+/*
+* This DirectoryVersionsSqlStatementsReader reads the sql statements from the files located in the allSchemasVersionPath directory
+* This directory should contains all the directories containing the schema creation script specific to a schema VERSION
+* Example of the content of the directory :
+* catalogue
+* |-- 1.0
+* |  |-- oracle_catalogue_schema.sql
+* |  |-- postgres_catalogue_schema.sql
+* |  |....
+* |-- 1.1
+* |  |-- ...
+* */
+class DirectoryVersionsSqlStatementsReader: public SchemaSqlStatementsReader{
+  public:
+    DirectoryVersionsSqlStatementsReader(const cta::rdbms::Login::DbType dbType, const std::string &catalogueVersion, const std::string &allSchemasVersionPath);
+    DirectoryVersionsSqlStatementsReader(const DirectoryVersionsSqlStatementsReader& orig);
+    virtual ~DirectoryVersionsSqlStatementsReader();
+    virtual std::list<std::string> getStatements();
+private:
+  std::string m_catalogueVersion;
+  std::string m_allSchemasVersionPath;
+  const std::string c_catalogueFileNameTrailer = "_catalogue_schema.sql";
+  /**
+  * Return the schema located in SCHEMA_VERSION/dbType_catalogue_schema.sql
+  * @return the string containing the sql statements for the creation of the schema
+  */
+  std::string readSchemaFromFile();
+  std::string getSchemaFilePath();
+};
+
+class MapSqlStatementsReader: public SchemaSqlStatementsReader{
+  public:
+    MapSqlStatementsReader(const cta::rdbms::Login::DbType dbType, const std::string &catalogueVersion);
+    MapSqlStatementsReader(const MapSqlStatementsReader& orig);
+    virtual ~MapSqlStatementsReader();
+    virtual std::list<std::string> getStatements();
+private:
+  std::string m_catalogueVersion;
+};
+
+}}
\ No newline at end of file
diff --git a/catalogue/VerifySchemaCmd.cpp b/catalogue/VerifySchemaCmd.cpp
index df28acd317ead77110709c254823365a363017d4..eb83c7669f747d0460c72f286528522559628189 100644
--- a/catalogue/VerifySchemaCmd.cpp
+++ b/catalogue/VerifySchemaCmd.cpp
@@ -78,7 +78,8 @@ int VerifySchemaCmd::exceptionThrowingMain(const int argc, char *const *const ar
   
   if(!cmdLineArgs.allSchemaDirectoryPath.empty()){
     cta::catalogue::SchemaChecker schemaChecker(login.dbType,conn);
-    schemaChecker.useSQLiteSchemaComparer(allSchemasDirectoryPath);
+    cta::optional<std::string> allSchemasDirectoryPathOpt(allSchemasDirectoryPath);
+    schemaChecker.useSQLiteSchemaComparer(allSchemasDirectoryPathOpt);
     SchemaChecker::Status comparisonStatus = schemaChecker.compareSchema();
     schemaChecker.checkNoParallelTables();
     if(comparisonStatus == SchemaChecker::Status::FAILURE){