Merge branch 'master' of https://github.com/thingsboard/thingsboard into map/3.0

This commit is contained in:
Artem Halushko 2020-03-20 14:26:33 +02:00
commit be5e3907d8
5 changed files with 15 additions and 57 deletions

View File

@ -14,24 +14,6 @@
-- limitations under the License. -- 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(); -- call create_partition_ts_kv_table();
CREATE OR REPLACE PROCEDURE create_partition_ts_kv_table() LANGUAGE plpgsql AS $$ CREATE OR REPLACE PROCEDURE create_partition_ts_kv_table() LANGUAGE plpgsql AS $$

View File

@ -14,25 +14,6 @@
-- limitations under the License. -- 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(); -- call create_new_ts_kv_table();
CREATE OR REPLACE PROCEDURE create_new_ts_kv_table() LANGUAGE plpgsql AS $$ CREATE OR REPLACE PROCEDURE create_new_ts_kv_table() LANGUAGE plpgsql AS $$

View File

@ -32,11 +32,8 @@ import java.sql.Statement;
public abstract class AbstractSqlTsDatabaseUpgradeService { public abstract class AbstractSqlTsDatabaseUpgradeService {
protected static final String CALL_REGEX = "call "; 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_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}") @Value("${spring.datasource.url}")
protected String dbUrl; protected String dbUrl;
@ -58,13 +55,14 @@ public abstract class AbstractSqlTsDatabaseUpgradeService {
} }
protected boolean checkVersion(Connection conn) { protected boolean checkVersion(Connection conn) {
log.info("Check the current PostgreSQL version...");
boolean versionValid = false; boolean versionValid = false;
try { try {
Statement statement = conn.createStatement(); Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(CALL_REGEX + CHECK_VERSION); ResultSet resultSet = statement.executeQuery("SELECT current_setting('server_version_num')");
resultSet.next(); resultSet.next();
versionValid = resultSet.getBoolean(1); if(resultSet.getLong(1) > 110000) {
versionValid = true;
}
statement.close(); statement.close();
} catch (Exception e) { } catch (Exception e) {
log.info("Failed to check current PostgreSQL version due to: {}", e.getMessage()); log.info("Failed to check current PostgreSQL version due to: {}", e.getMessage());

View File

@ -70,16 +70,15 @@ public class PsqlTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgradeSe
switch (fromVersion) { switch (fromVersion) {
case "2.4.3": case "2.4.3":
try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) { try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
log.info("Updating timeseries schema ..."); log.info("Check the current PostgreSQL version...");
log.info("Load upgrade functions ...");
loadSql(conn);
boolean versionValid = checkVersion(conn); boolean versionValid = checkVersion(conn);
if (!versionValid) { if (!versionValid) {
log.info("PostgreSQL version should be at least more than 11!"); throw new RuntimeException("PostgreSQL version should be at least more than 11, please upgrade your PostgreSQL and restart the script!");
log.info("Please upgrade your PostgreSQL and restart the script!");
} else { } else {
log.info("PostgreSQL version is valid!"); 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_PARTITION_TS_KV_TABLE);
executeQuery(conn, CALL_CREATE_PARTITIONS); executeQuery(conn, CALL_CREATE_PARTITIONS);
executeQuery(conn, CALL_CREATE_TS_KV_DICTIONARY_TABLE); 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_OLD);
executeQuery(conn, DROP_TABLE_TS_KV_LATEST_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_PARTITION_TS_KV_TABLE);
executeQuery(conn, DROP_PROCEDURE_CREATE_PARTITIONS); executeQuery(conn, DROP_PROCEDURE_CREATE_PARTITIONS);
executeQuery(conn, DROP_PROCEDURE_CREATE_TS_KV_DICTIONARY_TABLE); executeQuery(conn, DROP_PROCEDURE_CREATE_TS_KV_DICTIONARY_TABLE);

View File

@ -73,16 +73,15 @@ public class TimescaleTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgr
switch (fromVersion) { switch (fromVersion) {
case "2.4.3": case "2.4.3":
try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) { try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
log.info("Updating timescale schema ..."); log.info("Check the current PostgreSQL version...");
log.info("Load upgrade functions ...");
loadSql(conn);
boolean versionValid = checkVersion(conn); boolean versionValid = checkVersion(conn);
if (!versionValid) { if (!versionValid) {
log.info("PostgreSQL version should be at least more than 11!"); throw new RuntimeException("PostgreSQL version should be at least more than 11, please upgrade your PostgreSQL and restart the script!");
log.info("Please upgrade your PostgreSQL and restart the script!");
} else { } else {
log.info("PostgreSQL version is valid!"); 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_TS_KV_LATEST_TABLE);
executeQuery(conn, CALL_CREATE_NEW_TENANT_TS_KV_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 ADD COLUMN json_v json;");
executeQuery(conn, "ALTER TABLE ts_kv_latest 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; break;