You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2024/05/22 02:47:11 UTC
(iotdb) 01/04: add expression temp impl
This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch ty/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit f1d2cce85301d744615a153711330ca91f9307e5
Author: Beyyes <cg...@foxmail.com>
AuthorDate: Wed May 22 10:37:06 2024 +0800
add expression temp impl
---
.../relational/planner/ir/RewritingVisitor.java | 19 ++++++++++
.../relational/planner/ir/SerializeVisitor.java | 3 ++
iotdb-core/relational-parser/pom.xml | 6 ++++
.../relational/sql/tree/ComparisonExpression.java | 16 +++++++++
.../iotdb/db/relational/sql/tree/Expression.java | 40 ++++++++++++++++++++++
.../{Expression.java => TableExpressionType.java} | 22 ++++--------
6 files changed, 91 insertions(+), 15 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/RewritingVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/RewritingVisitor.java
index 64a87fa7bf7..6fbe7493c81 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/RewritingVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/RewritingVisitor.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
package org.apache.iotdb.db.queryengine.plan.relational.planner.ir;
import org.apache.iotdb.db.relational.sql.tree.ArithmeticBinaryExpression;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/SerializeVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/SerializeVisitor.java
new file mode 100644
index 00000000000..2ab295c11cb
--- /dev/null
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/SerializeVisitor.java
@@ -0,0 +1,3 @@
+package org.apache.iotdb.db.queryengine.plan.relational.planner.ir;
+
+public class SerializeVisitor {}
diff --git a/iotdb-core/relational-parser/pom.xml b/iotdb-core/relational-parser/pom.xml
index e65d4eb10c0..8257f4551e9 100644
--- a/iotdb-core/relational-parser/pom.xml
+++ b/iotdb-core/relational-parser/pom.xml
@@ -56,5 +56,11 @@
<artifactId>iotdb-relational-grammar</artifactId>
<version>1.3.2-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.iotdb</groupId>
+ <artifactId>tsfile</artifactId>
+ <version>1.3.2-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ComparisonExpression.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ComparisonExpression.java
index f5a264ed786..3c55d8a6c62 100644
--- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ComparisonExpression.java
+++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/ComparisonExpression.java
@@ -19,10 +19,14 @@
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.nio.ByteBuffer;
import java.util.List;
import java.util.Objects;
@@ -168,4 +172,16 @@ public class ComparisonExpression extends Expression {
return operator == ((ComparisonExpression) other).operator;
}
+
+ // =============== serialize =================
+ protected void serialize(DataOutputStream stream) {
+ // stream.write();
+ }
+
+ public ComparisonExpression(ByteBuffer byteBuffer) {
+ super(null);
+ operator = Operator.values()[ReadWriteIOUtils.readInt(byteBuffer)];
+ left = null;
+ right = null;
+ }
}
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 29ab6b83674..bcd5916e0bd 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
@@ -20,9 +20,14 @@
package org.apache.iotdb.db.relational.sql.tree;
import org.apache.iotdb.db.relational.sql.util.ExpressionFormatter;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import javax.annotation.Nullable;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
public abstract class Expression extends Node {
protected Expression(@Nullable NodeLocation location) {
@@ -39,4 +44,39 @@ public abstract class Expression extends Node {
public final String toString() {
return ExpressionFormatter.formatExpression(this);
}
+
+ public TableExpressionType getExpressionType() {
+ return null;
+ }
+
+ protected void serialize(ByteBuffer byteBuffer) {}
+
+ protected void serialize(DataOutputStream stream) {}
+
+ public static void serialize(Expression expression, ByteBuffer byteBuffer) {
+ ReadWriteIOUtils.write(
+ expression.getExpressionType().getExpressionTypeInShortEnum(), byteBuffer);
+
+ expression.serialize(byteBuffer);
+ }
+
+ public static void serialize(Expression expression, DataOutputStream stream) throws IOException {
+ ReadWriteIOUtils.write(expression.getExpressionType().getExpressionTypeInShortEnum(), stream);
+ expression.serialize(stream);
+ }
+
+ public static Expression deserialize(ByteBuffer byteBuffer) {
+ short type = ReadWriteIOUtils.readShort(byteBuffer);
+
+ Expression expression;
+ switch (type) {
+ case 0:
+ expression = new ComparisonExpression(byteBuffer);
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid expression type: " + type);
+ }
+
+ return expression;
+ }
}
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/TableExpressionType.java
similarity index 60%
copy from iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Expression.java
copy to iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/TableExpressionType.java
index 29ab6b83674..ed3b6ff420c 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/TableExpressionType.java
@@ -19,24 +19,16 @@
package org.apache.iotdb.db.relational.sql.tree;
-import org.apache.iotdb.db.relational.sql.util.ExpressionFormatter;
+public enum TableExpressionType {
+ LITERAL((short) 1);
-import javax.annotation.Nullable;
-
-public abstract class Expression extends Node {
-
- protected Expression(@Nullable NodeLocation location) {
- super(location);
+ TableExpressionType(short type) {
+ this.type = type;
}
- /** Accessible for {@link AstVisitor}, use {@link AstVisitor#process(Node, Object)} instead. */
- @Override
- public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
- return visitor.visitExpression(this, context);
- }
+ private final short type;
- @Override
- public final String toString() {
- return ExpressionFormatter.formatExpression(this);
+ public short getExpressionTypeInShortEnum() {
+ return type;
}
}