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;
+    }
   }
 }

Reply via email to