You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2022/04/29 10:30:06 UTC
[iotdb] 02/02: StringRegularTransformer
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 <ro...@apache.org>
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;
+ }
}
}