This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch ty/TableIT in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 405eeb2c5c836332f60d137a67cc6eaa49905130 Author: JackieTien97 <[email protected]> AuthorDate: Tue Jul 23 20:47:11 2024 +0800 partial --- .../relational/ColumnTransformerBuilder.java | 22 +++++++++++++--------- .../scalar/SubStringFunctionColumnTransformer.java | 4 ++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java index d95391632e7..a16994cf35a 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java @@ -571,11 +571,13 @@ public class ColumnTransformerBuilder ColumnTransformer first = this.process(children.get(0), context); if (children.size() == 2) { if (isLongLiteral(children.get(1))) { + int startIndex = (int) ((LongLiteral) children.get(1)).getParsedValue(); + if (startIndex <= 0) { + throw new SemanticException( + "Argument exception,the scalar function [SUBSTRING] beginPosition and length must be greater than 0"); + } return new SubStringFunctionColumnTransformer( - first.getType(), - first, - (int) ((LongLiteral) children.get(1)).getParsedValue(), - Integer.MAX_VALUE); + first.getType(), first, startIndex, Integer.MAX_VALUE); } else { return new SubString2ColumnTransformer( first.getType(), first, this.process(children.get(1), context)); @@ -583,11 +585,13 @@ public class ColumnTransformerBuilder } else { // size == 3 if (isLongLiteral(children.get(1)) && isLongLiteral(children.get(2))) { - return new SubStringFunctionColumnTransformer( - first.getType(), - first, - (int) ((LongLiteral) children.get(1)).getParsedValue(), - (int) ((LongLiteral) children.get(2)).getParsedValue()); + int startIndex = (int) ((LongLiteral) children.get(1)).getParsedValue(); + int length = (int) ((LongLiteral) children.get(2)).getParsedValue(); + if (startIndex <= 0 || length <= 0) { + throw new SemanticException( + "Argument exception,the scalar function [SUBSTRING] beginPosition and length must be greater than 0"); + } + return new SubStringFunctionColumnTransformer(first.getType(), first, startIndex, length); } else { return new SubString3ColumnTransformer( first.getType(), diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java index e33acd12e1b..0b567d799b6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java @@ -30,8 +30,8 @@ import org.apache.tsfile.utils.BytesUtils; public class SubStringFunctionColumnTransformer extends UnaryColumnTransformer { - private int beginPosition; - private int endPosition; + private final int beginPosition; + private final int endPosition; public static final String EMPTY_STRING = ""; public SubStringFunctionColumnTransformer(
