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 35437ad2aa48a9d0dac2945a864287c37d1d86bf Author: Beyyes <[email protected]> AuthorDate: Wed May 22 15:59:18 2024 +0800 add literal serialize and desrialize method --- .../db/relational/sql/tree/BinaryLiteral.java | 27 ++++++++++++++++++++++ .../db/relational/sql/tree/BooleanLiteral.java | 20 ++++++++++++++++ .../db/relational/sql/tree/DecimalLiteral.java | 20 ++++++++++++++++ .../db/relational/sql/tree/DoubleLiteral.java | 21 +++++++++++++++++ .../iotdb/db/relational/sql/tree/Expression.java | 27 +++++++++++++++++++--- .../db/relational/sql/tree/GenericLiteral.java | 21 +++++++++++++++++ .../iotdb/db/relational/sql/tree/LongLiteral.java | 22 ++++++++++++++++++ .../iotdb/db/relational/sql/tree/NullLiteral.java | 16 +++++++++++++ .../relational/sql/tree/TableExpressionType.java | 15 ++++++++++-- 9 files changed, 184 insertions(+), 5 deletions(-) diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BinaryLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BinaryLiteral.java index b46bd344733..cbaae8740f2 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BinaryLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BinaryLiteral.java @@ -20,10 +20,14 @@ package org.apache.iotdb.db.relational.sql.tree; import org.apache.iotdb.db.relational.sql.parser.ParsingException; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import com.google.common.base.CharMatcher; import com.google.common.io.BaseEncoding; +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; import java.util.Arrays; import static java.util.Locale.ENGLISH; @@ -103,4 +107,27 @@ public class BinaryLiteral extends Literal { return Arrays.equals(value, ((BinaryLiteral) other).value); } + + // =============== serialize ================= + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.BINARY_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException { + ReadWriteIOUtils.write(this.value.length, stream); + for (byte b : value) { + ReadWriteIOUtils.write(b, stream); + } + } + + public BinaryLiteral(ByteBuffer byteBuffer) { + super(null); + int length = ReadWriteIOUtils.readInt(byteBuffer); + this.value = new byte[length]; + for (int i = 0; i < length; i++) { + value[i] = ReadWriteIOUtils.readByte(byteBuffer); + } + } } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BooleanLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BooleanLiteral.java index 608115ea122..72af330efbb 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BooleanLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/BooleanLiteral.java @@ -19,6 +19,11 @@ package org.apache.iotdb.db.relational.sql.tree; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; import java.util.Objects; import static com.google.common.base.Preconditions.checkArgument; @@ -84,4 +89,19 @@ public class BooleanLiteral extends Literal { return value == ((BooleanLiteral) other).value; } + + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.BOOLEAN_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException { + ReadWriteIOUtils.write(this.value, stream); + } + + public BooleanLiteral(ByteBuffer byteBuffer) { + super(null); + this.value = ReadWriteIOUtils.readBool(byteBuffer); + } } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DecimalLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DecimalLiteral.java index 5c92a12d0f5..69156e9a7f9 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DecimalLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DecimalLiteral.java @@ -19,6 +19,11 @@ package org.apache.iotdb.db.relational.sql.tree; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; import java.util.Objects; import static java.util.Objects.requireNonNull; @@ -73,4 +78,19 @@ public class DecimalLiteral extends Literal { DecimalLiteral otherLiteral = (DecimalLiteral) other; return value.equals(otherLiteral.value); } + + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.DECIMAL_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException { + ReadWriteIOUtils.write(this.value, stream); + } + + public DecimalLiteral(ByteBuffer byteBuffer) { + super(null); + this.value = ReadWriteIOUtils.readString(byteBuffer); + } } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DoubleLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DoubleLiteral.java index 7d911f32a32..df1f0ea624c 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DoubleLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/DoubleLiteral.java @@ -19,6 +19,12 @@ package org.apache.iotdb.db.relational.sql.tree; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + import static java.util.Objects.requireNonNull; public class DoubleLiteral extends Literal { @@ -77,4 +83,19 @@ public class DoubleLiteral extends Literal { return value == ((DoubleLiteral) other).value; } + + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.DOUBLE_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException { + ReadWriteIOUtils.write(this.value, stream); + } + + public DoubleLiteral(ByteBuffer byteBuffer) { + super(null); + this.value = ReadWriteIOUtils.readDouble(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 adece7d04c7..a396caf8d59 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,15 +73,36 @@ public abstract class Expression extends Node { Expression expression; switch (type) { - case 24: - expression = new SymbolReference(byteBuffer); - break; case 15: expression = new ComparisonExpression(byteBuffer); break; + case 16: + expression = new BinaryLiteral(byteBuffer); + break; + case 17: + expression = new BooleanLiteral(byteBuffer); + break; + case 18: + expression = new DecimalLiteral(byteBuffer); + break; + case 19: + expression = new DoubleLiteral(byteBuffer); + break; + case 20: + expression = new GenericLiteral(byteBuffer); + break; + case 21: + expression = new LongLiteral(byteBuffer); + break; + case 22: + expression = new NullLiteral(byteBuffer); + break; case 23: expression = new StringLiteral(byteBuffer); break; + case 24: + expression = new SymbolReference(byteBuffer); + break; default: throw new IllegalArgumentException("Invalid expression type: " + type); } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericLiteral.java index d487ab4cf0a..60a5906a0ea 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericLiteral.java @@ -20,7 +20,11 @@ package org.apache.iotdb.db.relational.sql.tree; import org.apache.iotdb.db.relational.sql.parser.ParsingException; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; import java.util.Objects; import static java.util.Objects.requireNonNull; @@ -100,4 +104,21 @@ public class GenericLiteral extends Literal { return value.equals(otherLiteral.value) && type.equals(otherLiteral.type); } + + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.GENERIC_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException { + ReadWriteIOUtils.write(this.type, stream); + ReadWriteIOUtils.write(this.value, stream); + } + + public GenericLiteral(ByteBuffer byteBuffer) { + super(null); + this.type = ReadWriteIOUtils.readString(byteBuffer); + this.value = ReadWriteIOUtils.readString(byteBuffer); + } } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LongLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LongLiteral.java index 88472eb1f25..768c29d9203 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LongLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/LongLiteral.java @@ -20,6 +20,11 @@ package org.apache.iotdb.db.relational.sql.tree; import org.apache.iotdb.db.relational.sql.parser.ParsingException; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; import static java.util.Objects.requireNonNull; @@ -106,4 +111,21 @@ public class LongLiteral extends Literal { return Long.parseLong(value); } } + + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.LONG_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException { + ReadWriteIOUtils.write(this.value, stream); + ReadWriteIOUtils.write(this.parsedValue, stream); + } + + public LongLiteral(ByteBuffer byteBuffer) { + super(null); + this.value = ReadWriteIOUtils.readString(byteBuffer); + this.parsedValue = ReadWriteIOUtils.readLong(byteBuffer); + } } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NullLiteral.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NullLiteral.java index 167cd54ddc8..19a873cef0d 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NullLiteral.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/NullLiteral.java @@ -19,6 +19,10 @@ package org.apache.iotdb.db.relational.sql.tree; +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + import static java.util.Objects.requireNonNull; public class NullLiteral extends Literal { @@ -57,4 +61,16 @@ public class NullLiteral extends Literal { public boolean shallowEquals(Node other) { return sameClass(this, other); } + + @Override + public TableExpressionType getExpressionType() { + return TableExpressionType.NULL_LITERAL; + } + + @Override + public void serialize(DataOutputStream stream) throws IOException {} + + public NullLiteral(ByteBuffer byteBuffer) { + super(null); + } } 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 e3d99d4d104..e4d0124ab77 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,9 +20,20 @@ package org.apache.iotdb.db.relational.sql.tree; public enum TableExpressionType { - SYMBOL_REFERENCE((short) 24), + BETWEEN((short) 11), + IN_PREDICATE((short) 12), + LOGICAL_EXPRESSION((short) 13), + NOT_EXPRESSION((short) 14), COMPARISON((short) 15), - STRING_LITERAL((short) 23); + BINARY_LITERAL((short) 16), + BOOLEAN_LITERAL((short) 17), + DECIMAL_LITERAL((short) 18), + DOUBLE_LITERAL((short) 19), + GENERIC_LITERAL((short) 20), + LONG_LITERAL((short) 21), + NULL_LITERAL((short) 22), + STRING_LITERAL((short) 23), + SYMBOL_REFERENCE((short) 24); TableExpressionType(short type) { this.type = type;
