Commit e190bb63f055358f5f98181160707a7759cb9085

Authored by Igor Kulikov
1 parent 9ce07959

Expand string values column of latest values SQL table.

  1 +--
  2 +-- Copyright © 2016-2017 The Thingsboard Authors
  3 +--
  4 +-- Licensed under the Apache License, Version 2.0 (the "License");
  5 +-- you may not use this file except in compliance with the License.
  6 +-- You may obtain a copy of the License at
  7 +--
  8 +-- http://www.apache.org/licenses/LICENSE-2.0
  9 +--
  10 +-- Unless required by applicable law or agreed to in writing, software
  11 +-- distributed under the License is distributed on an "AS IS" BASIS,
  12 +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +-- See the License for the specific language governing permissions and
  14 +-- limitations under the License.
  15 +--
  16 +
  17 +ALTER TABLE ts_kv_latest ALTER COLUMN str_v varchar(10000000);
@@ -71,7 +71,7 @@ public class ThingsboardInstallService { @@ -71,7 +71,7 @@ public class ThingsboardInstallService {
71 case "1.2.3": //NOSONAR, Need to execute gradual upgrade starting from upgradeFromVersion 71 case "1.2.3": //NOSONAR, Need to execute gradual upgrade starting from upgradeFromVersion
72 log.info("Upgrading ThingsBoard from version 1.2.3 to 1.3.0 ..."); 72 log.info("Upgrading ThingsBoard from version 1.2.3 to 1.3.0 ...");
73 73
74 - databaseUpgradeService.upgradeDatabase(upgradeFromVersion); 74 + databaseUpgradeService.upgradeDatabase("1.2.3");
75 75
76 log.info("Updating system data..."); 76 log.info("Updating system data...");
77 77
@@ -86,6 +86,8 @@ public class ThingsboardInstallService { @@ -86,6 +86,8 @@ public class ThingsboardInstallService {
86 case "1.3.0": 86 case "1.3.0":
87 log.info("Upgrading ThingsBoard from version 1.3.0 to 1.3.1 ..."); 87 log.info("Upgrading ThingsBoard from version 1.3.0 to 1.3.1 ...");
88 88
  89 + databaseUpgradeService.upgradeDatabase("1.3.0");
  90 +
89 log.info("Updating system data..."); 91 log.info("Updating system data...");
90 92
91 systemDataLoaderService.deleteSystemWidgetBundle("charts"); 93 systemDataLoaderService.deleteSystemWidgetBundle("charts");
@@ -155,6 +155,8 @@ public class CassandraDatabaseUpgradeService implements DatabaseUpgradeService { @@ -155,6 +155,8 @@ public class CassandraDatabaseUpgradeService implements DatabaseUpgradeService {
155 log.info("Relations restored."); 155 log.info("Relations restored.");
156 156
157 break; 157 break;
  158 + case "1.3.0":
  159 + break;
158 default: 160 default:
159 throw new RuntimeException("Unable to upgrade Cassandra database, unsupported fromVersion: " + fromVersion); 161 throw new RuntimeException("Unable to upgrade Cassandra database, unsupported fromVersion: " + fromVersion);
160 } 162 }
@@ -17,19 +17,50 @@ @@ -17,19 +17,50 @@
17 package org.thingsboard.server.service.install; 17 package org.thingsboard.server.service.install;
18 18
19 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
  20 +import org.springframework.beans.factory.annotation.Value;
20 import org.springframework.context.annotation.Profile; 21 import org.springframework.context.annotation.Profile;
21 import org.springframework.stereotype.Service; 22 import org.springframework.stereotype.Service;
22 import org.thingsboard.server.dao.util.SqlDao; 23 import org.thingsboard.server.dao.util.SqlDao;
23 24
  25 +import java.nio.charset.Charset;
  26 +import java.nio.file.Files;
  27 +import java.nio.file.Path;
  28 +import java.nio.file.Paths;
  29 +import java.sql.Connection;
  30 +import java.sql.DriverManager;
  31 +
24 @Service 32 @Service
25 @Profile("install") 33 @Profile("install")
26 @Slf4j 34 @Slf4j
27 @SqlDao 35 @SqlDao
28 public class SqlDatabaseUpgradeService implements DatabaseUpgradeService { 36 public class SqlDatabaseUpgradeService implements DatabaseUpgradeService {
29 37
  38 + private static final String SCHEMA_UPDATE_SQL = "schema_update.sql";
  39 +
  40 + @Value("${install.data_dir}")
  41 + private String dataDir;
  42 +
  43 + @Value("${spring.datasource.url}")
  44 + private String dbUrl;
  45 +
  46 + @Value("${spring.datasource.username}")
  47 + private String dbUserName;
  48 +
  49 + @Value("${spring.datasource.password}")
  50 + private String dbPassword;
  51 +
30 @Override 52 @Override
31 public void upgradeDatabase(String fromVersion) throws Exception { 53 public void upgradeDatabase(String fromVersion) throws Exception {
32 switch (fromVersion) { 54 switch (fromVersion) {
  55 + case "1.3.0":
  56 + log.info("Updating schema ...");
  57 + Path schemaUpdateFile = Paths.get(this.dataDir, "upgrade", "1.3.1", SCHEMA_UPDATE_SQL);
  58 + try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
  59 + String sql = new String(Files.readAllBytes(schemaUpdateFile), Charset.forName("UTF-8"));
  60 + conn.createStatement().execute(sql); //NOSONAR, ignoring because method used to execute thingsboard database upgrade script
  61 + }
  62 + log.info("Schema updated.");
  63 + break;
33 default: 64 default:
34 throw new RuntimeException("Unable to upgrade SQL database, unsupported fromVersion: " + fromVersion); 65 throw new RuntimeException("Unable to upgrade SQL database, unsupported fromVersion: " + fromVersion);
35 } 66 }
@@ -209,7 +209,7 @@ CREATE TABLE IF NOT EXISTS ts_kv_latest ( @@ -209,7 +209,7 @@ CREATE TABLE IF NOT EXISTS ts_kv_latest (
209 key varchar(255) NOT NULL, 209 key varchar(255) NOT NULL,
210 ts bigint NOT NULL, 210 ts bigint NOT NULL,
211 bool_v boolean, 211 bool_v boolean,
212 - str_v varchar, 212 + str_v varchar(10000000),
213 long_v bigint, 213 long_v bigint,
214 dbl_v double precision, 214 dbl_v double precision,
215 CONSTRAINT ts_kv_latest_unq_key UNIQUE (entity_type, entity_id, key) 215 CONSTRAINT ts_kv_latest_unq_key UNIQUE (entity_type, entity_id, key)