This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch iotdb-2993-trasnformer in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit c093793cde791a6f57d336dbc7bf31ff99ffcc0f Author: Steve Yurong Su <[email protected]> AuthorDate: Fri Apr 29 18:29:40 2022 +0800 StringRegularTransformer --- .../transformer/unary/LogicNotTransformer.java | 6 +++--- ...nsformer.java => StringRegularTransformer.java} | 22 ++++++++++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java index 1aeb5fb85d..1bf9499c29 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java +++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java @@ -38,11 +38,11 @@ public class LogicNotTransformer extends UnaryTransformer { @Override protected void transformAndCache() throws QueryProcessException, IOException { - if (layerPointReader.getDataType() == TSDataType.BOOLEAN) { - cachedBoolean = !layerPointReader.currentBoolean(); - } else { + if (layerPointReader.getDataType() != TSDataType.BOOLEAN) { throw new QueryProcessException( "Unsupported data type: " + layerPointReader.getDataType().toString()); } + + cachedBoolean = !layerPointReader.currentBoolean(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/StringRegularTransformer.java similarity index 71% copy from server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java copy to server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/StringRegularTransformer.java index 1aeb5fb85d..3bbc41a032 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/LogicNotTransformer.java +++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/transformer/unary/StringRegularTransformer.java @@ -22,27 +22,37 @@ package org.apache.iotdb.db.query.udf.core.transformer.unary; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; +import org.apache.iotdb.tsfile.utils.Binary; import java.io.IOException; +import java.util.regex.Pattern; -public class LogicNotTransformer extends UnaryTransformer { +public class StringRegularTransformer extends UnaryTransformer { - public LogicNotTransformer(LayerPointReader layerPointReader) { + private final Pattern pattern; + + public StringRegularTransformer(LayerPointReader layerPointReader, Pattern pattern) { super(layerPointReader); + this.pattern = pattern; } @Override public TSDataType getDataType() { - return TSDataType.BOOLEAN; + return TSDataType.TEXT; } @Override protected void transformAndCache() throws QueryProcessException, IOException { - if (layerPointReader.getDataType() == TSDataType.BOOLEAN) { - cachedBoolean = !layerPointReader.currentBoolean(); - } else { + if (layerPointReader.getDataType() != TSDataType.TEXT) { throw new QueryProcessException( "Unsupported data type: " + layerPointReader.getDataType().toString()); } + + Binary binary = layerPointReader.currentBinary(); + if (pattern.matcher(binary.getStringValue()).matches()) { + cachedBinary = binary; + } else { + currentNull = true; + } } }
