From 2ff559947d7f03e5fdb2cd5b3b2c525933e2336d Mon Sep 17 00:00:00 2001
From: Cedric CAFFY <cedric.caffy@cern.ch>
Date: Thu, 5 Dec 2019 16:05:23 +0100
Subject: [PATCH] The CTA Catalogue schema version number is now stored in
 CTAVersions.cmake

The insertion of the version of the Catalogue schema into the DB is now done when the schema sql files are generated. (catalogue/CMakeLists.txt)
The CTA_CATALOGUE_SCHEMA_VERSION_MAJOR and the CTA_CATALOGUE_SCHEMA_VERSION_MINOR are also inserted in version.hpp.in
---
 catalogue/CMakeLists.txt                      | 8 ++++++++
 catalogue/common_catalogue_schema.sql         | 6 ------
 catalogue/insert_cta_catalogue_version.sql.in | 6 ++++++
 cmake/CTAVersions.cmake                       | 4 ++++
 version.hpp.in                                | 2 ++
 5 files changed, 20 insertions(+), 6 deletions(-)
 create mode 100644 catalogue/insert_cta_catalogue_version.sql.in

diff --git a/catalogue/CMakeLists.txt b/catalogue/CMakeLists.txt
index e053625f0f..d2d776162f 100644
--- a/catalogue/CMakeLists.txt
+++ b/catalogue/CMakeLists.txt
@@ -96,10 +96,14 @@ target_link_libraries (ctacatalogue
   ctacommon
   ctardbms)
 
+#Generate insert_cta_catalogue_version.sql
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/insert_cta_catalogue_version.sql.in insert_cta_catalogue_version.sql)
+
 add_custom_command (OUTPUT sqlite_catalogue_schema.sql mysql_catalogue_schema.sql oracle_catalogue_schema.sql postgres_catalogue_schema.sql
   COMMAND cat
     ${CMAKE_CURRENT_SOURCE_DIR}/sqlite_catalogue_schema_header.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/common_catalogue_schema.sql
+    insert_cta_catalogue_version.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/sqlite_catalogue_schema_trailer.sql
     | sed 's/UINT8TYPE/INTEGER/g'
     | sed 's/UINT16TYPE/INTEGER/g'
@@ -111,6 +115,7 @@ add_custom_command (OUTPUT sqlite_catalogue_schema.sql mysql_catalogue_schema.sq
   COMMAND cat 
     ${CMAKE_CURRENT_SOURCE_DIR}/mysql_catalogue_schema_header.sql 
     ${CMAKE_CURRENT_SOURCE_DIR}/common_catalogue_schema.sql 
+    insert_cta_catalogue_version.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/mysql_catalogue_schema_trailer.sql
     | sed 's/UINT8TYPE/TINYINT UNSIGNED/g'
     | sed 's/UINT16TYPE/SMALLINT UNSIGNED/g'
@@ -122,6 +127,7 @@ add_custom_command (OUTPUT sqlite_catalogue_schema.sql mysql_catalogue_schema.sq
   COMMAND cat
     ${CMAKE_CURRENT_SOURCE_DIR}/oracle_catalogue_schema_header.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/common_catalogue_schema.sql
+    insert_cta_catalogue_version.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/oracle_catalogue_schema_trailer.sql
     | sed 's/UINT8TYPE/NUMERIC\(3, 0\)/g'
     | sed 's/UINT16TYPE/NUMERIC\(5, 0\)/g'
@@ -133,6 +139,7 @@ add_custom_command (OUTPUT sqlite_catalogue_schema.sql mysql_catalogue_schema.sq
   COMMAND cat
     ${CMAKE_CURRENT_SOURCE_DIR}/postgres_catalogue_schema_header.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/common_catalogue_schema.sql
+    insert_cta_catalogue_version.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/postgres_catalogue_schema_trailer.sql
     | sed 's/UINT8TYPE/NUMERIC\(3, 0\)/g'
     | sed 's/UINT16TYPE/NUMERIC\(5, 0\)/g'
@@ -142,6 +149,7 @@ add_custom_command (OUTPUT sqlite_catalogue_schema.sql mysql_catalogue_schema.sq
     > postgres_catalogue_schema.sql
   DEPENDS
     ${CMAKE_CURRENT_SOURCE_DIR}/common_catalogue_schema.sql
+    ${CMAKE_SOURCE_DIR}/cmake/CTAVersions.cmake
     ${CMAKE_CURRENT_SOURCE_DIR}/sqlite_catalogue_schema_header.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/sqlite_catalogue_schema_trailer.sql
     ${CMAKE_CURRENT_SOURCE_DIR}/mysql_catalogue_schema_header.sql
diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql
index 13fb702029..d15ddfaebb 100644
--- a/catalogue/common_catalogue_schema.sql
+++ b/catalogue/common_catalogue_schema.sql
@@ -261,9 +261,3 @@ CREATE TABLE EXPERIMENTS (
  NAME                     VARCHAR(20),
  GID                      NUMERIC(6, 0) CONSTRAINT EXPERIMENTS_GID_PK PRIMARY KEY
 );
-INSERT INTO CTA_CATALOGUE(
-  SCHEMA_VERSION_MAJOR,
-  SCHEMA_VERSION_MINOR)
-VALUES(
-  0,
-  0);
diff --git a/catalogue/insert_cta_catalogue_version.sql.in b/catalogue/insert_cta_catalogue_version.sql.in
new file mode 100644
index 0000000000..22d3d0b3a8
--- /dev/null
+++ b/catalogue/insert_cta_catalogue_version.sql.in
@@ -0,0 +1,6 @@
+INSERT INTO CTA_CATALOGUE(
+  SCHEMA_VERSION_MAJOR,
+  SCHEMA_VERSION_MINOR)
+VALUES(
+  @CTA_CATALOGUE_SCHEMA_VERSION_MAJOR@,
+  @CTA_CATALOGUE_SCHEMA_VERSION_MINOR@);
\ No newline at end of file
diff --git a/cmake/CTAVersions.cmake b/cmake/CTAVersions.cmake
index e68f523cc0..b9baec2207 100644
--- a/cmake/CTAVersions.cmake
+++ b/cmake/CTAVersions.cmake
@@ -2,6 +2,10 @@
 set(CTA_VERSION 0)
 set(CTA_RELEASE 1)
 
+# Catalogue Schema Version
+set(CTA_CATALOGUE_SCHEMA_VERSION_MAJOR 0)
+set(CTA_CATALOGUE_SCHEMA_VERSION_MINOR 0)
+
 # Shared object internal version (used in SONAME)
 set(CTA_SOVERSION 0)
 
diff --git a/version.hpp.in b/version.hpp.in
index d33b955cd5..a22605055a 100644
--- a/version.hpp.in
+++ b/version.hpp.in
@@ -20,3 +20,5 @@
 
 #define CTA_VERSION "@CTA_VERSION@-@CTA_RELEASE@"
 
+#define CTA_CATALOGUE_SCHEMA_VERSION_MAJOR @CTA_CATALOGUE_SCHEMA_VERSION_MAJOR@
+#define CTA_CATALOGUE_SCHEMA_VERSION_MINOR @CTA_CATALOGUE_SCHEMA_VERSION_MINOR@
\ No newline at end of file
-- 
GitLab