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;

Reply via email to