thingsboard-developers

Merge branch 'release-1.3'

10/17/2017 6:58:12 AM

Details

diff --git a/application/src/main/data/upgrade/1.3.1/schema_update.sql b/application/src/main/data/upgrade/1.3.1/schema_update.sql
new file mode 100644
index 0000000..47cdd5d
--- /dev/null
+++ b/application/src/main/data/upgrade/1.3.1/schema_update.sql
@@ -0,0 +1,17 @@
+--
+-- Copyright © 2016-2017 The Thingsboard Authors
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+ALTER TABLE ts_kv_latest ALTER COLUMN str_v varchar(10000000);
diff --git a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
index 577c0c5..0b737de 100644
--- a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
+++ b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
@@ -71,7 +71,7 @@ public class ThingsboardInstallService {
                     case "1.2.3": //NOSONAR, Need to execute gradual upgrade starting from upgradeFromVersion
                         log.info("Upgrading ThingsBoard from version 1.2.3 to 1.3.0 ...");
 
-                        databaseUpgradeService.upgradeDatabase(upgradeFromVersion);
+                        databaseUpgradeService.upgradeDatabase("1.2.3");
 
                         log.info("Updating system data...");
 
@@ -86,6 +86,8 @@ public class ThingsboardInstallService {
                     case "1.3.0":
                         log.info("Upgrading ThingsBoard from version 1.3.0 to 1.3.1 ...");
 
+                        databaseUpgradeService.upgradeDatabase("1.3.0");
+
                         log.info("Updating system data...");
 
                         systemDataLoaderService.deleteSystemWidgetBundle("charts");
diff --git a/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseUpgradeService.java
index 5abc789..7f009f4 100644
--- a/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseUpgradeService.java
+++ b/application/src/main/java/org/thingsboard/server/service/install/CassandraDatabaseUpgradeService.java
@@ -155,6 +155,8 @@ public class CassandraDatabaseUpgradeService implements DatabaseUpgradeService {
                 log.info("Relations restored.");
 
                 break;
+            case "1.3.0":
+                break;
             default:
                 throw new RuntimeException("Unable to upgrade Cassandra database, unsupported fromVersion: " + fromVersion);
         }
diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java
index fed8388..a8ffa99 100644
--- a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java
+++ b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java
@@ -17,19 +17,50 @@
 package org.thingsboard.server.service.install;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
 import org.thingsboard.server.dao.util.SqlDao;
 
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
 @Service
 @Profile("install")
 @Slf4j
 @SqlDao
 public class SqlDatabaseUpgradeService implements DatabaseUpgradeService {
 
+    private static final String SCHEMA_UPDATE_SQL = "schema_update.sql";
+
+    @Value("${install.data_dir}")
+    private String dataDir;
+
+    @Value("${spring.datasource.url}")
+    private String dbUrl;
+
+    @Value("${spring.datasource.username}")
+    private String dbUserName;
+
+    @Value("${spring.datasource.password}")
+    private String dbPassword;
+
     @Override
     public void upgradeDatabase(String fromVersion) throws Exception {
         switch (fromVersion) {
+            case "1.3.0":
+                log.info("Updating schema ...");
+                Path schemaUpdateFile = Paths.get(this.dataDir, "upgrade", "1.3.1", SCHEMA_UPDATE_SQL);
+                try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
+                    String sql = new String(Files.readAllBytes(schemaUpdateFile), Charset.forName("UTF-8"));
+                    conn.createStatement().execute(sql); //NOSONAR, ignoring because method used to execute thingsboard database upgrade script
+                }
+                log.info("Schema updated.");
+                break;
             default:
                 throw new RuntimeException("Unable to upgrade SQL database, unsupported fromVersion: " + fromVersion);
         }
diff --git a/dao/src/main/resources/sql/schema.sql b/dao/src/main/resources/sql/schema.sql
index 93e906c..26b314c 100644
--- a/dao/src/main/resources/sql/schema.sql
+++ b/dao/src/main/resources/sql/schema.sql
@@ -209,7 +209,7 @@ CREATE TABLE IF NOT EXISTS ts_kv_latest (
     key varchar(255) NOT NULL,
     ts bigint NOT NULL,
     bool_v boolean,
-    str_v varchar,
+    str_v varchar(10000000),
     long_v bigint,
     dbl_v double precision,
     CONSTRAINT ts_kv_latest_unq_key UNIQUE (entity_type, entity_id, key)