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