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