From 135aa8ddb9d075837513db5cc4072d601d50b596 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 19 May 2020 15:56:51 +0300 Subject: [PATCH] Fix migration script --- .../CassandraEntitiesToSqlMigrateService.java | 2 +- .../install/migrate/CassandraToSqlColumn.java | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraEntitiesToSqlMigrateService.java b/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraEntitiesToSqlMigrateService.java index 964e138363..a4b4336d61 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraEntitiesToSqlMigrateService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraEntitiesToSqlMigrateService.java @@ -135,7 +135,7 @@ public class CassandraEntitiesToSqlMigrateService implements EntitiesMigrateServ stringColumn("entity_type"), stringColumn("attribute_type"), stringColumn("attribute_key"), - booleanColumn("bool_v"), + booleanColumn("bool_v", true), stringColumn("str_v"), bigintColumn("long_v"), doubleColumn("dbl_v"), diff --git a/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraToSqlColumn.java b/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraToSqlColumn.java index e58243b12b..6ad7c54743 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraToSqlColumn.java +++ b/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraToSqlColumn.java @@ -38,6 +38,7 @@ public class CassandraToSqlColumn { private int sqlType; private int size; private Class enumClass; + private boolean allowNullBoolean = false; public static CassandraToSqlColumn idColumn(String name) { return new CassandraToSqlColumn(name, CassandraToSqlColumnType.ID); @@ -60,7 +61,11 @@ public class CassandraToSqlColumn { } public static CassandraToSqlColumn booleanColumn(String name) { - return new CassandraToSqlColumn(name, CassandraToSqlColumnType.BOOLEAN); + return booleanColumn(name, false); + } + + public static CassandraToSqlColumn booleanColumn(String name, boolean allowNullBoolean) { + return new CassandraToSqlColumn(name, name, CassandraToSqlColumnType.BOOLEAN, null, allowNullBoolean); } public static CassandraToSqlColumn jsonColumn(String name) { @@ -72,32 +77,33 @@ public class CassandraToSqlColumn { } public CassandraToSqlColumn(String columnName) { - this(columnName, columnName, CassandraToSqlColumnType.STRING, null); + this(columnName, columnName, CassandraToSqlColumnType.STRING, null, false); } public CassandraToSqlColumn(String columnName, CassandraToSqlColumnType type) { - this(columnName, columnName, type, null); + this(columnName, columnName, type, null, false); } public CassandraToSqlColumn(String columnName, CassandraToSqlColumnType type, Class enumClass) { - this(columnName, columnName, type, enumClass); + this(columnName, columnName, type, enumClass, false); } public CassandraToSqlColumn(String cassandraColumnName, String sqlColumnName) { - this(cassandraColumnName, sqlColumnName, CassandraToSqlColumnType.STRING, null); + this(cassandraColumnName, sqlColumnName, CassandraToSqlColumnType.STRING, null, false); } public CassandraToSqlColumn(String cassandraColumnName, String sqlColumnName, CassandraToSqlColumnType type, - Class enumClass) { + Class enumClass, boolean allowNullBoolean) { this.cassandraColumnName = cassandraColumnName; this.sqlColumnName = sqlColumnName; this.type = type; this.enumClass = enumClass; + this.allowNullBoolean = allowNullBoolean; } public String getColumnValue(Row row) { if (row.isNull(index)) { - if (this.type == CassandraToSqlColumnType.BOOLEAN) { + if (this.type == CassandraToSqlColumnType.BOOLEAN && !this.allowNullBoolean) { return Boolean.toString(false); } else { return null;