From 1bde12eed0dfc8e5d6dc32462072417cbb44c59b Mon Sep 17 00:00:00 2001 From: Dmytro Shvaika Date: Wed, 18 Mar 2020 14:39:30 +0200 Subject: [PATCH 1/2] fix-the-timeseries-upgrade --- .../upgrade/2.4.3/schema_update_psql_ts.sql | 18 ------------------ .../2.4.3/schema_update_timescale_ts.sql | 19 ------------------- .../AbstractSqlTsDatabaseUpgradeService.java | 12 +++++------- .../install/PsqlTsDatabaseUpgradeService.java | 12 +++++------- .../TimescaleTsDatabaseUpgradeService.java | 13 ++++++------- 5 files changed, 16 insertions(+), 58 deletions(-) diff --git a/application/src/main/data/upgrade/2.4.3/schema_update_psql_ts.sql b/application/src/main/data/upgrade/2.4.3/schema_update_psql_ts.sql index 3d17bbef2f..e10f3ee2bd 100644 --- a/application/src/main/data/upgrade/2.4.3/schema_update_psql_ts.sql +++ b/application/src/main/data/upgrade/2.4.3/schema_update_psql_ts.sql @@ -14,24 +14,6 @@ -- limitations under the License. -- --- call check_version(); - -CREATE OR REPLACE PROCEDURE check_version(INOUT valid_version boolean) LANGUAGE plpgsql AS $BODY$ -DECLARE - current_version integer; -BEGIN - RAISE NOTICE 'Check the current installed PostgreSQL version...'; - SELECT current_setting('server_version_num') INTO current_version; - IF current_version > 110000 THEN - RAISE NOTICE 'PostgreSQL version is valid!'; - RAISE NOTICE 'Schema update started...'; - SELECT true INTO valid_version; - ELSE - RAISE NOTICE 'Postgres version should be at least more than 10!'; - END IF; -END; -$BODY$; - -- call create_partition_ts_kv_table(); CREATE OR REPLACE PROCEDURE create_partition_ts_kv_table() LANGUAGE plpgsql AS $$ diff --git a/application/src/main/data/upgrade/2.4.3/schema_update_timescale_ts.sql b/application/src/main/data/upgrade/2.4.3/schema_update_timescale_ts.sql index ebbc6933ae..982ec9d85f 100644 --- a/application/src/main/data/upgrade/2.4.3/schema_update_timescale_ts.sql +++ b/application/src/main/data/upgrade/2.4.3/schema_update_timescale_ts.sql @@ -14,25 +14,6 @@ -- limitations under the License. -- --- call check_version(); - -CREATE OR REPLACE PROCEDURE check_version(INOUT valid_version boolean) LANGUAGE plpgsql AS $BODY$ - -DECLARE - current_version integer; -BEGIN - RAISE NOTICE 'Check the current installed PostgreSQL version...'; - SELECT current_setting('server_version_num') INTO current_version; - IF current_version > 110000 THEN - RAISE NOTICE 'PostgreSQL version is valid!'; - RAISE NOTICE 'Schema update started...'; - SELECT true INTO valid_version; - ELSE - RAISE NOTICE 'Postgres version should be at least more than 10!'; - END IF; -END; -$BODY$; - -- call create_new_ts_kv_table(); CREATE OR REPLACE PROCEDURE create_new_ts_kv_table() LANGUAGE plpgsql AS $$ diff --git a/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java index 901f773515..1008bc689a 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java @@ -32,11 +32,8 @@ import java.sql.Statement; public abstract class AbstractSqlTsDatabaseUpgradeService { protected static final String CALL_REGEX = "call "; - protected static final String CHECK_VERSION = "check_version(false)"; - protected static final String CHECK_VERSION_TO_DELETE = "check_version(INOUT valid_version boolean)"; - protected static final String DROP_TABLE = "DROP TABLE "; + protected static final String DROP_TABLE = "DROP TABLE "; protected static final String DROP_PROCEDURE_IF_EXISTS = "DROP PROCEDURE IF EXISTS "; - protected static final String DROP_PROCEDURE_CHECK_VERSION = DROP_PROCEDURE_IF_EXISTS + CHECK_VERSION_TO_DELETE; @Value("${spring.datasource.url}") protected String dbUrl; @@ -58,13 +55,14 @@ public abstract class AbstractSqlTsDatabaseUpgradeService { } protected boolean checkVersion(Connection conn) { - log.info("Check the current PostgreSQL version..."); boolean versionValid = false; try { Statement statement = conn.createStatement(); - ResultSet resultSet = statement.executeQuery(CALL_REGEX + CHECK_VERSION); + ResultSet resultSet = statement.executeQuery("SELECT current_setting('server_version_num')"); resultSet.next(); - versionValid = resultSet.getBoolean(1); + if(resultSet.getLong(1) > 110000) { + versionValid = true; + } statement.close(); } catch (Exception e) { log.info("Failed to check current PostgreSQL version due to: {}", e.getMessage()); diff --git a/application/src/main/java/org/thingsboard/server/service/install/PsqlTsDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/PsqlTsDatabaseUpgradeService.java index 96f2c126a0..a630540981 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/PsqlTsDatabaseUpgradeService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/PsqlTsDatabaseUpgradeService.java @@ -70,16 +70,15 @@ public class PsqlTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgradeSe switch (fromVersion) { case "2.4.3": try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) { - log.info("Updating timeseries schema ..."); - log.info("Load upgrade functions ..."); - loadSql(conn); + log.info("Check the current PostgreSQL version..."); boolean versionValid = checkVersion(conn); if (!versionValid) { - log.info("PostgreSQL version should be at least more than 11!"); - log.info("Please upgrade your PostgreSQL and restart the script!"); + throw new RuntimeException("PostgreSQL version should be at least more than 11, please upgrade your PostgreSQL and restart the script!"); } else { log.info("PostgreSQL version is valid!"); - log.info("Updating schema ..."); + log.info("Load upgrade functions ..."); + loadSql(conn); + log.info("Updating timeseries schema ..."); executeQuery(conn, CALL_CREATE_PARTITION_TS_KV_TABLE); executeQuery(conn, CALL_CREATE_PARTITIONS); executeQuery(conn, CALL_CREATE_TS_KV_DICTIONARY_TABLE); @@ -91,7 +90,6 @@ public class PsqlTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgradeSe executeQuery(conn, DROP_TABLE_TS_KV_OLD); executeQuery(conn, DROP_TABLE_TS_KV_LATEST_OLD); - executeQuery(conn, DROP_PROCEDURE_CHECK_VERSION); executeQuery(conn, DROP_PROCEDURE_CREATE_PARTITION_TS_KV_TABLE); executeQuery(conn, DROP_PROCEDURE_CREATE_PARTITIONS); executeQuery(conn, DROP_PROCEDURE_CREATE_TS_KV_DICTIONARY_TABLE); diff --git a/application/src/main/java/org/thingsboard/server/service/install/TimescaleTsDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/TimescaleTsDatabaseUpgradeService.java index e438f965c8..99afd59a50 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/TimescaleTsDatabaseUpgradeService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/TimescaleTsDatabaseUpgradeService.java @@ -73,16 +73,15 @@ public class TimescaleTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgr switch (fromVersion) { case "2.4.3": try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) { - log.info("Updating timescale schema ..."); - log.info("Load upgrade functions ..."); - loadSql(conn); + log.info("Check the current PostgreSQL version..."); boolean versionValid = checkVersion(conn); if (!versionValid) { - log.info("PostgreSQL version should be at least more than 11!"); - log.info("Please upgrade your PostgreSQL and restart the script!"); + throw new RuntimeException("PostgreSQL version should be at least more than 11, please upgrade your PostgreSQL and restart the script!"); } else { log.info("PostgreSQL version is valid!"); - log.info("Updating schema ..."); + log.info("Load upgrade functions ..."); + loadSql(conn); + log.info("Updating timescale schema ..."); executeQuery(conn, CALL_CREATE_TS_KV_LATEST_TABLE); executeQuery(conn, CALL_CREATE_NEW_TENANT_TS_KV_TABLE); @@ -105,7 +104,7 @@ public class TimescaleTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgr executeQuery(conn, "ALTER TABLE ts_kv ADD COLUMN json_v json;"); executeQuery(conn, "ALTER TABLE ts_kv_latest ADD COLUMN json_v json;"); - log.info("schema timeseries updated!"); + log.info("schema timescale updated!"); } } break; From 0e6b3b49b8bf56b2a450c2fc2c4f1a8e4f9d5821 Mon Sep 17 00:00:00 2001 From: Dmytro Shvaika Date: Wed, 18 Mar 2020 14:40:23 +0200 Subject: [PATCH 2/2] fix typo --- .../service/install/AbstractSqlTsDatabaseUpgradeService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java index 1008bc689a..70e56f9489 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/AbstractSqlTsDatabaseUpgradeService.java @@ -32,7 +32,7 @@ import java.sql.Statement; public abstract class AbstractSqlTsDatabaseUpgradeService { protected static final String CALL_REGEX = "call "; - protected static final String DROP_TABLE = "DROP TABLE "; + protected static final String DROP_TABLE = "DROP TABLE "; protected static final String DROP_PROCEDURE_IF_EXISTS = "DROP PROCEDURE IF EXISTS "; @Value("${spring.datasource.url}")