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 <[email protected]> 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);
