This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch new-table-model-debug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ef3f5ecf3f809f8923d97cb260508d6f94a96d45
Author: Beyyes <[email protected]>
AuthorDate: Wed May 22 16:19:23 2024 +0800

    add BetweenPredicate InPredicate LogicalExpression NotExpression serialize 
impl
---
 .../db/relational/sql/tree/BetweenPredicate.java   | 22 ++++++++++++++++
 .../iotdb/db/relational/sql/tree/Expression.java   | 12 +++++++++
 .../iotdb/db/relational/sql/tree/InPredicate.java  | 20 +++++++++++++++
 .../db/relational/sql/tree/LogicalExpression.java  | 30 ++++++++++++++++++++++
 .../db/relational/sql/tree/NotExpression.java      | 18 +++++++++++++
 5 files changed, 102 insertions(+)

diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BetweenPredicate.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BetweenPredicate.java
index 47905caf4b0..af1fdcce8fb 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BetweenPredicate.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BetweenPredicate.java
@@ -23,6 +23,9 @@ import com.google.common.collect.ImmutableList;
 
 import javax.annotation.Nonnull;
 
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Objects;
 
@@ -103,4 +106,23 @@ public final class BetweenPredicate extends Expression {
   public boolean shallowEquals(Node other) {
     return sameClass(this, other);
   }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.BETWEEN;
+  }
+
+  @Override
+  public void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(value, stream);
+    Expression.serialize(min, stream);
+    Expression.serialize(max, stream);
+  }
+
+  public BetweenPredicate(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+    this.min = Expression.deserialize(byteBuffer);
+    this.max = Expression.deserialize(byteBuffer);
+  }
 }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Expression.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Expression.java
index a396caf8d59..d179eec4aee 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Expression.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Expression.java
@@ -73,6 +73,18 @@ public abstract class Expression extends Node {
 
     Expression expression;
     switch (type) {
+      case 11:
+        expression = new BetweenPredicate(byteBuffer);
+        break;
+      case 12:
+        expression = new InPredicate(byteBuffer);
+        break;
+      case 13:
+        expression = new LogicalExpression(byteBuffer);
+        break;
+      case 14:
+        expression = new NotExpression(byteBuffer);
+        break;
       case 15:
         expression = new ComparisonExpression(byteBuffer);
         break;
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InPredicate.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InPredicate.java
index b5233b9500d..b0f7dc1026b 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InPredicate.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InPredicate.java
@@ -21,6 +21,9 @@ package org.apache.iotdb.db.relational.sql.tree;
 
 import com.google.common.collect.ImmutableList;
 
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Objects;
 
@@ -83,4 +86,21 @@ public class InPredicate extends Expression {
   public boolean shallowEquals(Node other) {
     return sameClass(this, other);
   }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.IN_PREDICATE;
+  }
+
+  @Override
+  public void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(value, stream);
+    Expression.serialize(valueList, stream);
+  }
+
+  public InPredicate(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+    this.valueList = Expression.deserialize(byteBuffer);
+  }
 }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LogicalExpression.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LogicalExpression.java
index a5eea3e4a77..63e70b05f88 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LogicalExpression.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LogicalExpression.java
@@ -19,8 +19,14 @@
 
 package org.apache.iotdb.db.relational.sql.tree;
 
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
 import com.google.common.collect.ImmutableList;
 
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -116,4 +122,28 @@ public class LogicalExpression extends Expression {
 
     return operator == ((LogicalExpression) other).operator;
   }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.LOGICAL_EXPRESSION;
+  }
+
+  @Override
+  public void serialize(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write(this.operator.ordinal(), stream);
+    ReadWriteIOUtils.write(this.terms.size(), stream);
+    for (Expression term : terms) {
+      Expression.serialize(term, stream);
+    }
+  }
+
+  public LogicalExpression(ByteBuffer byteBuffer) {
+    super(null);
+    this.operator = Operator.values()[ReadWriteIOUtils.readInt(byteBuffer)];
+    int size = ReadWriteIOUtils.readInt(byteBuffer);
+    this.terms = new ArrayList<>(size);
+    while (size-- > 0) {
+      this.terms.add(Expression.deserialize(byteBuffer));
+    }
+  }
 }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NotExpression.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NotExpression.java
index dd425122c9a..334d0a0e882 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NotExpression.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NotExpression.java
@@ -21,6 +21,9 @@ package org.apache.iotdb.db.relational.sql.tree;
 
 import com.google.common.collect.ImmutableList;
 
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Objects;
 
@@ -76,4 +79,19 @@ public class NotExpression extends Expression {
   public boolean shallowEquals(Node other) {
     return sameClass(this, other);
   }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.NOT_EXPRESSION;
+  }
+
+  @Override
+  public void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(this.value, stream);
+  }
+
+  public NotExpression(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+  }
 }

Reply via email to