This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 01ca80bc29 [IOTDB-4318][RESTAPI]when writing data through the 
interface rest/v1/insertTablet ,data type conversion failed (#7265)
01ca80bc29 is described below

commit 01ca80bc29383132589d9443bf8e9f0f3cd223e5
Author: Summer <[email protected]>
AuthorDate: Thu Sep 8 14:07:09 2022 +0800

    [IOTDB-4318][RESTAPI]when writing data through the interface 
rest/v1/insertTablet ,data type conversion failed (#7265)
---
 .../mpprest/handler/StatementConstructionHandler.java   | 17 ++++++++++++-----
 .../rest/handler/PhysicalPlanConstructionHandler.java   | 17 ++++++++++++-----
 2 files changed, 24 insertions(+), 10 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/protocol/mpprest/handler/StatementConstructionHandler.java
 
b/server/src/main/java/org/apache/iotdb/db/protocol/mpprest/handler/StatementConstructionHandler.java
index 49f13a26ed..532a356a77 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/protocol/mpprest/handler/StatementConstructionHandler.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/protocol/mpprest/handler/StatementConstructionHandler.java
@@ -60,10 +60,17 @@ public class StatementConstructionHandler {
         case BOOLEAN:
           boolean[] booleanValues = new boolean[rowSize];
           for (int rowIndex = 0; rowIndex < rowSize; rowIndex++) {
-            if (rawData.get(columnIndex).get(rowIndex) == null) {
+            Object data = rawData.get(columnIndex).get(rowIndex);
+            if (data == null) {
               bitMaps[columnIndex].mark(rowIndex);
             } else {
-              booleanValues[rowIndex] = (Boolean) 
rawData.get(columnIndex).get(rowIndex);
+              if ("1".equals(data.toString())) {
+                booleanValues[rowIndex] = true;
+              } else if ("0".equals(data.toString())) {
+                booleanValues[rowIndex] = false;
+              } else {
+                booleanValues[rowIndex] = (Boolean) data;
+              }
             }
           }
           columns[columnIndex] = booleanValues;
@@ -103,11 +110,11 @@ public class StatementConstructionHandler {
         case FLOAT:
           float[] floatValues = new float[rowSize];
           for (int rowIndex = 0; rowIndex < rowSize; rowIndex++) {
-            if (rawData.get(columnIndex).get(rowIndex) == null) {
+            Object data = rawData.get(columnIndex).get(rowIndex);
+            if (data == null) {
               bitMaps[columnIndex].mark(rowIndex);
             } else {
-              floatValues[rowIndex] =
-                  ((Double) 
rawData.get(columnIndex).get(rowIndex)).floatValue();
+              floatValues[rowIndex] = Float.valueOf(String.valueOf(data));
             }
           }
           columns[columnIndex] = floatValues;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/protocol/rest/handler/PhysicalPlanConstructionHandler.java
 
b/server/src/main/java/org/apache/iotdb/db/protocol/rest/handler/PhysicalPlanConstructionHandler.java
index 7d3cdcb259..1c74fd3c0e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/protocol/rest/handler/PhysicalPlanConstructionHandler.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/protocol/rest/handler/PhysicalPlanConstructionHandler.java
@@ -58,10 +58,17 @@ public class PhysicalPlanConstructionHandler {
         case BOOLEAN:
           boolean[] booleanValues = new boolean[rowSize];
           for (int rowIndex = 0; rowIndex < rowSize; rowIndex++) {
-            if (rawData.get(columnIndex).get(rowIndex) == null) {
+            Object data = rawData.get(columnIndex).get(rowIndex);
+            if (data == null) {
               bitMaps[columnIndex].mark(rowIndex);
             } else {
-              booleanValues[rowIndex] = (Boolean) 
rawData.get(columnIndex).get(rowIndex);
+              if ("1".equals(data.toString())) {
+                booleanValues[rowIndex] = true;
+              } else if ("0".equals(data.toString())) {
+                booleanValues[rowIndex] = false;
+              } else {
+                booleanValues[rowIndex] = (Boolean) data;
+              }
             }
           }
           columns[columnIndex] = booleanValues;
@@ -101,11 +108,11 @@ public class PhysicalPlanConstructionHandler {
         case FLOAT:
           float[] floatValues = new float[rowSize];
           for (int rowIndex = 0; rowIndex < rowSize; rowIndex++) {
-            if (rawData.get(columnIndex).get(rowIndex) == null) {
+            Object data = rawData.get(columnIndex).get(rowIndex);
+            if (data == null) {
               bitMaps[columnIndex].mark(rowIndex);
             } else {
-              floatValues[rowIndex] =
-                  ((Double) 
rawData.get(columnIndex).get(rowIndex)).floatValue();
+              floatValues[rowIndex] = Float.valueOf(String.valueOf(data));
             }
           }
           columns[columnIndex] = floatValues;

Reply via email to