You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2022/07/02 03:44:01 UTC

[iotdb] 07/08: modify exception message

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

hui pushed a commit to branch lmh/fillCheckDebug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 22ec8cbcf318c450d26ee4b2a0d6f7aa4ac2e6fd
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Sat Jul 2 11:23:23 2022 +0800

    modify exception message
---
 .../java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java | 13 ++++++++++---
 .../iotdb/db/mpp/plan/statement/literal/BooleanLiteral.java |  5 +++++
 .../iotdb/db/mpp/plan/statement/literal/DoubleLiteral.java  |  5 +++++
 .../apache/iotdb/db/mpp/plan/statement/literal/Literal.java |  2 ++
 .../iotdb/db/mpp/plan/statement/literal/LongLiteral.java    |  5 +++++
 .../iotdb/db/mpp/plan/statement/literal/NullLiteral.java    |  5 +++++
 .../iotdb/db/mpp/plan/statement/literal/StringLiteral.java  |  5 +++++
 7 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index c29081c2a5..2dd7c55ff9 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -416,13 +416,19 @@ public class Analyzer {
               TSDataType checkedDataType = typeProvider.getType(fillColumn.getExpressionString());
               if (!fillComponent.getFillValue().isDataTypeConsistency(checkedDataType)) {
                 throw new SemanticException(
-                    "FILL: the data type of the fill value should be the same as the output column");
+                    String.format(
+                        "Data type mismatch: column '%s' (dataType '%s') doesn't support fill with '%s' (dataType '%s').",
+                        fillColumn.getExpressionString(),
+                        checkedDataType,
+                        fillComponent.getFillValue().getBinary(),
+                        fillComponent.getFillValue().getDataTypeString()));
               }
             }
           } else if (fillComponent.getFillPolicy() == FillPolicy.LINEAR) {
             // TODO support linear fill in align by device query
             if (queryStatement.isAlignByDevice()) {
-              throw new SemanticException("Linear fill is not supported in align by device query.");
+              throw new SemanticException(
+                  "Linear fill is not supported in align by device query yet.");
             }
 
             for (Expression fillColumn : fillColumnList) {
@@ -430,7 +436,8 @@ public class Analyzer {
               if (!checkedDataType.isNumeric()) {
                 throw new SemanticException(
                     String.format(
-                        "FILL: dataType %s doesn't support linear fill.", checkedDataType));
+                        "Data type mismatch: column '%s' (dataType '%s') doesn't support linear fill.",
+                        fillColumn.getExpressionString(), checkedDataType));
               }
             }
           }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/BooleanLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/BooleanLiteral.java
index 203badb1de..8cbe5db20f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/BooleanLiteral.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/BooleanLiteral.java
@@ -57,6 +57,11 @@ public class BooleanLiteral extends Literal {
     return dataType == TSDataType.BOOLEAN || dataType == TSDataType.TEXT;
   }
 
+  @Override
+  public String getDataTypeString() {
+    return TSDataType.BOOLEAN.toString();
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/DoubleLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/DoubleLiteral.java
index 3647f95b15..868d87276a 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/DoubleLiteral.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/DoubleLiteral.java
@@ -58,6 +58,11 @@ public class DoubleLiteral extends Literal {
         || dataType == TSDataType.TEXT;
   }
 
+  @Override
+  public String getDataTypeString() {
+    return TSDataType.DOUBLE.toString();
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/Literal.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/Literal.java
index ec9c348f4c..710d9b9694 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/Literal.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/Literal.java
@@ -62,6 +62,8 @@ public abstract class Literal extends StatementNode {
 
   public abstract boolean isDataTypeConsistency(TSDataType dataType);
 
+  public abstract String getDataTypeString();
+
   public boolean getBoolean() {
     throw new UnsupportedOperationException(getClass().getName());
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java
index 16767f2210..6014f1c387 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java
@@ -64,6 +64,11 @@ public class LongLiteral extends Literal {
         || dataType == TSDataType.TEXT;
   }
 
+  @Override
+  public String getDataTypeString() {
+    return TSDataType.INT64.toString();
+  }
+
   @Override
   public int getInt() {
     return Math.toIntExact(value);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java
index 67d0cfe818..51221a494a 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java
@@ -44,6 +44,11 @@ public class NullLiteral extends Literal {
     return false;
   }
 
+  @Override
+  public String getDataTypeString() {
+    return "NULL";
+  }
+
   @Override
   public Binary getBinary() {
     return new Binary("null");
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/StringLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/StringLiteral.java
index 6bfb05e561..118680ce47 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/StringLiteral.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/StringLiteral.java
@@ -56,6 +56,11 @@ public class StringLiteral extends Literal {
     return dataType == TSDataType.TEXT;
   }
 
+  @Override
+  public String getDataTypeString() {
+    return TSDataType.TEXT.toString();
+  }
+
   @Override
   public Binary getBinary() {
     return new Binary(value);