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 bec3a903b6d160f404c1ce4b95ed97c08434e501
Author: Beyyes <[email protected]>
AuthorDate: Wed May 22 17:02:24 2024 +0800

    Merge branch 'ty/TableModelGrammar' of github.com:apache/iotdb into 
ty/TableModelGrammar
---
 .../sql/tree/ArithmeticBinaryExpression.java       | 24 +++++++++++++++++++
 .../sql/tree/ArithmeticUnaryExpression.java        | 22 +++++++++++++++++
 .../iotdb/db/relational/sql/tree/Expression.java   | 20 +++++++++++++++-
 .../db/relational/sql/tree/InListExpression.java   | 28 ++++++++++++++++++++++
 .../db/relational/sql/tree/IsNotNullPredicate.java | 18 ++++++++++++++
 .../db/relational/sql/tree/IsNullPredicate.java    | 18 ++++++++++++++
 .../db/relational/sql/tree/LikePredicate.java      | 22 +++++++++++++++++
 .../relational/sql/tree/TableExpressionType.java   |  6 +++++
 8 files changed, 157 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticBinaryExpression.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticBinaryExpression.java
index 9bcfeedbc8c..5879fa40018 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticBinaryExpression.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticBinaryExpression.java
@@ -19,10 +19,15 @@
 
 package org.apache.iotdb.db.relational.sql.tree;
 
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
 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;
 
@@ -66,6 +71,25 @@ public class ArithmeticBinaryExpression extends Expression {
     this.right = right;
   }
 
+  public ArithmeticBinaryExpression(ByteBuffer byteBuffer) {
+    super(null);
+    this.operator = Operator.values()[ReadWriteIOUtils.readInt(byteBuffer)];
+    this.left = Expression.deserialize(byteBuffer);
+    this.right = Expression.deserialize(byteBuffer);
+  }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.ARITHMETIC_BINARY;
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write(operator.ordinal(), stream);
+    Expression.serialize(left, stream);
+    Expression.serialize(right, stream);
+  }
+
   public Operator getOperator() {
     return operator;
   }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticUnaryExpression.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticUnaryExpression.java
index 364acc94a33..1b1425975c1 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticUnaryExpression.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ArithmeticUnaryExpression.java
@@ -19,10 +19,15 @@
 
 package org.apache.iotdb.db.relational.sql.tree;
 
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
 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;
 
@@ -47,6 +52,23 @@ public class ArithmeticUnaryExpression extends Expression {
     this.sign = sign;
   }
 
+  public ArithmeticUnaryExpression(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+    this.sign = Sign.values()[ReadWriteIOUtils.readInt(byteBuffer)];
+  }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.ARITHMETIC_UNARY;
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(value, stream);
+    ReadWriteIOUtils.write(sign.ordinal(), stream);
+  }
+
   public static ArithmeticUnaryExpression positive(
       @Nonnull NodeLocation location, Expression value) {
     return new ArithmeticUnaryExpression(
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 d179eec4aee..260c8b46271 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
@@ -71,8 +71,26 @@ public abstract class Expression extends Node {
   public static Expression deserialize(ByteBuffer byteBuffer) {
     short type = ReadWriteIOUtils.readShort(byteBuffer);
 
-    Expression expression;
+    Expression expression = null;
     switch (type) {
+      case 1:
+        expression = new ArithmeticBinaryExpression(byteBuffer);
+        break;
+      case 2:
+        expression = new ArithmeticUnaryExpression(byteBuffer);
+        break;
+      case 3:
+        expression = new LikePredicate(byteBuffer);
+        break;
+      case 4:
+        expression = new InListExpression(byteBuffer);
+        break;
+      case 5:
+        expression = new IsNotNullPredicate(byteBuffer);
+        break;
+      case 6:
+        expression = new IsNullPredicate(byteBuffer);
+        break;
       case 11:
         expression = new BetweenPredicate(byteBuffer);
         break;
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InListExpression.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InListExpression.java
index f8d263aa7e3..53c0c96f7d3 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InListExpression.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/InListExpression.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;
 
@@ -44,6 +50,28 @@ public class InListExpression extends Expression {
     this.values = ImmutableList.copyOf(values);
   }
 
+  public InListExpression(ByteBuffer byteBuffer) {
+    super(null);
+    int size = ReadWriteIOUtils.readInt(byteBuffer);
+    this.values = new ArrayList<>();
+    for (int i = 0; i < size; i++) {
+      values.add(Expression.deserialize(byteBuffer));
+    }
+  }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.IN_LIST;
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write(values.size(), stream);
+    for (Expression expression : values) {
+      Expression.serialize(expression, stream);
+    }
+  }
+
   public List<Expression> getValues() {
     return values;
   }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNotNullPredicate.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNotNullPredicate.java
index 8b8389982e0..bcf1323635f 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNotNullPredicate.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNotNullPredicate.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;
 
@@ -40,6 +43,21 @@ public class IsNotNullPredicate extends Expression {
     this.value = requireNonNull(value, "value is null");
   }
 
+  public IsNotNullPredicate(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+  }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.IS_NOT_NULL_PREDICATE;
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(value, stream);
+  }
+
   public Expression getValue() {
     return value;
   }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNullPredicate.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNullPredicate.java
index 81de5b31f01..473b09e26a0 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNullPredicate.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/IsNullPredicate.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;
 
@@ -40,6 +43,21 @@ public class IsNullPredicate extends Expression {
     this.value = requireNonNull(value, "value is null");
   }
 
+  public IsNullPredicate(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+  }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.IS_NULL_PREDICATE;
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(value, stream);
+  }
+
   public Expression getValue() {
     return value;
   }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LikePredicate.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LikePredicate.java
index e30fe360492..0a66814cc2a 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LikePredicate.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LikePredicate.java
@@ -23,6 +23,9 @@ import com.google.common.collect.ImmutableList;
 
 import javax.annotation.Nullable;
 
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -57,6 +60,25 @@ public class LikePredicate extends Expression {
     this.escape = requireNonNull(escape, "escape is null");
   }
 
+  public LikePredicate(ByteBuffer byteBuffer) {
+    super(null);
+    this.value = Expression.deserialize(byteBuffer);
+    this.pattern = Expression.deserialize(byteBuffer);
+    this.escape = Expression.deserialize(byteBuffer);
+  }
+
+  @Override
+  public TableExpressionType getExpressionType() {
+    return TableExpressionType.LIKE_PREDICATE;
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    Expression.serialize(value, stream);
+    Expression.serialize(pattern, stream);
+    Expression.serialize(escape, stream);
+  }
+
   public Expression getValue() {
     return value;
   }
diff --git 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/TableExpressionType.java
 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/TableExpressionType.java
index e4d0124ab77..722c4024350 100644
--- 
a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/TableExpressionType.java
+++ 
b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/TableExpressionType.java
@@ -20,6 +20,12 @@
 package org.apache.iotdb.db.relational.sql.tree;
 
 public enum TableExpressionType {
+  ARITHMETIC_BINARY((short) 1),
+  ARITHMETIC_UNARY((short) 2),
+  LIKE_PREDICATE((short) 3),
+  IN_LIST((short) 4),
+  IS_NOT_NULL_PREDICATE((short) 5),
+  IS_NULL_PREDICATE((short) 6),
   BETWEEN((short) 11),
   IN_PREDICATE((short) 12),
   LOGICAL_EXPRESSION((short) 13),

Reply via email to