You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2022/04/23 04:05:14 UTC
[iotdb] 03/04: new deser
This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch IOTDB-2962
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 5d442299f35f88c7d20f3aa249419be6bde87e63
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Sat Apr 23 11:51:18 2022 +0800
new deser
---
.../iotdb/db/query/expression/Expression.java | 75 ++++++++++++++-
.../iotdb/db/query/expression/ExpressionType.java | 107 +++++----------------
.../iotdb/db/query/expression/ResultColumn.java | 21 ++--
.../expression/binary/AdditionExpression.java | 19 ++--
.../query/expression/binary/BinaryExpression.java | 10 +-
.../expression/binary/DivisionExpression.java | 19 ++--
.../query/expression/binary/EqualToExpression.java | 20 ++--
.../expression/binary/GreaterEqualExpression.java | 19 ++--
.../expression/binary/GreaterThanExpression.java | 20 ++--
.../expression/binary/LessEqualExpression.java | 19 ++--
.../expression/binary/LessThanExpression.java | 19 ++--
.../expression/binary/LogicAndExpression.java | 20 ++--
.../query/expression/binary/LogicOrExpression.java | 20 ++--
.../query/expression/binary/ModuloExpression.java | 19 ++--
.../binary/MultiplicationExpression.java | 19 ++--
.../expression/binary/NonEqualExpression.java | 19 ++--
.../expression/binary/SubtractionExpression.java | 19 ++--
.../db/query/expression/unary/ConstantOperand.java | 23 +++--
.../query/expression/unary/FunctionExpression.java | 43 +++++----
.../query/expression/unary/LogicNotExpression.java | 21 ++--
.../query/expression/unary/NegationExpression.java | 20 ++--
.../query/expression/unary/RegularExpression.java | 32 +++---
.../query/expression/unary/TimeSeriesOperand.java | 18 ++--
23 files changed, 280 insertions(+), 341 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java
index 0a54966cf5..8f689b50b1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java
@@ -26,7 +26,25 @@ import org.apache.iotdb.db.metadata.path.PartialPath;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
import org.apache.iotdb.db.mpp.sql.rewriter.WildcardsRemover;
import org.apache.iotdb.db.qp.physical.crud.UDTFPlan;
+import org.apache.iotdb.db.query.expression.binary.AdditionExpression;
+import org.apache.iotdb.db.query.expression.binary.DivisionExpression;
+import org.apache.iotdb.db.query.expression.binary.EqualToExpression;
+import org.apache.iotdb.db.query.expression.binary.GreaterEqualExpression;
+import org.apache.iotdb.db.query.expression.binary.GreaterThanExpression;
+import org.apache.iotdb.db.query.expression.binary.LessEqualExpression;
+import org.apache.iotdb.db.query.expression.binary.LessThanExpression;
+import org.apache.iotdb.db.query.expression.binary.LogicAndExpression;
+import org.apache.iotdb.db.query.expression.binary.LogicOrExpression;
+import org.apache.iotdb.db.query.expression.binary.ModuloExpression;
+import org.apache.iotdb.db.query.expression.binary.MultiplicationExpression;
+import org.apache.iotdb.db.query.expression.binary.NonEqualExpression;
+import org.apache.iotdb.db.query.expression.binary.SubtractionExpression;
import org.apache.iotdb.db.query.expression.unary.ConstantOperand;
+import org.apache.iotdb.db.query.expression.unary.FunctionExpression;
+import org.apache.iotdb.db.query.expression.unary.LogicNotExpression;
+import org.apache.iotdb.db.query.expression.unary.NegationExpression;
+import org.apache.iotdb.db.query.expression.unary.RegularExpression;
+import org.apache.iotdb.db.query.expression.unary.TimeSeriesOperand;
import org.apache.iotdb.db.query.udf.core.executor.UDTFContext;
import org.apache.iotdb.db.query.udf.core.executor.UDTFExecutor;
import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer;
@@ -197,7 +215,60 @@ public abstract class Expression {
}
}
- public void serialize(ByteBuffer byteBuffer) {
- ReadWriteIOUtils.write(isConstantOperandCache, byteBuffer);
+ protected abstract short getExpressionType();
+
+ public static void serialize(Expression expression, ByteBuffer byteBuffer) {
+ ReadWriteIOUtils.write(expression.getExpressionType(), byteBuffer);
+ expression.serialize(byteBuffer);
+ }
+
+ public abstract void serialize(ByteBuffer byteBuffer);
+
+ public static Expression deserialize(ByteBuffer byteBuffer) {
+ short type = ReadWriteIOUtils.readShort(byteBuffer);
+ switch (type) {
+ case 0:
+ return new AdditionExpression(byteBuffer);
+ case 1:
+ return new DivisionExpression(byteBuffer);
+ case 2:
+ return new EqualToExpression(byteBuffer);
+ case 3:
+ return new GreaterEqualExpression(byteBuffer);
+ case 4:
+ return new GreaterThanExpression(byteBuffer);
+ case 5:
+ return new LessEqualExpression(byteBuffer);
+ case 6:
+ return new LessThanExpression(byteBuffer);
+ case 7:
+ return new LogicAndExpression(byteBuffer);
+ case 8:
+ return new LogicOrExpression(byteBuffer);
+ case 9:
+ return new ModuloExpression(byteBuffer);
+ case 10:
+ return new MultiplicationExpression(byteBuffer);
+ case 11:
+ return new NonEqualExpression(byteBuffer);
+ case 12:
+ return new SubtractionExpression(byteBuffer);
+ case 13:
+ return new FunctionExpression(byteBuffer);
+ case 14:
+ return new LogicNotExpression(byteBuffer);
+ case 15:
+ return new NegationExpression(byteBuffer);
+ case 16:
+ return new TimeSeriesOperand(byteBuffer);
+ case 17:
+ return new ConstantOperand(byteBuffer);
+ case 18:
+ throw new IllegalArgumentException("Invalid expression type: " + type);
+ case 19:
+ return new RegularExpression(byteBuffer);
+ default:
+ throw new IllegalArgumentException("Invalid expression type: " + type);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java b/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java
index 67cc35d32f..4510f4a4a1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java
@@ -18,46 +18,27 @@
*/
package org.apache.iotdb.db.query.expression;
-import org.apache.iotdb.db.query.expression.binary.AdditionExpression;
-import org.apache.iotdb.db.query.expression.binary.DivisionExpression;
-import org.apache.iotdb.db.query.expression.binary.EqualToExpression;
-import org.apache.iotdb.db.query.expression.binary.GreaterEqualExpression;
-import org.apache.iotdb.db.query.expression.binary.GreaterThanExpression;
-import org.apache.iotdb.db.query.expression.binary.LessEqualExpression;
-import org.apache.iotdb.db.query.expression.binary.LessThanExpression;
-import org.apache.iotdb.db.query.expression.binary.LogicAndExpression;
-import org.apache.iotdb.db.query.expression.binary.LogicOrExpression;
-import org.apache.iotdb.db.query.expression.binary.ModuloExpression;
-import org.apache.iotdb.db.query.expression.binary.MultiplicationExpression;
-import org.apache.iotdb.db.query.expression.binary.NonEqualExpression;
-import org.apache.iotdb.db.query.expression.binary.SubtractionExpression;
-import org.apache.iotdb.db.query.expression.unary.ConstantOperand;
-import org.apache.iotdb.db.query.expression.unary.FunctionExpression;
-import org.apache.iotdb.db.query.expression.unary.LogicNotExpression;
-import org.apache.iotdb.db.query.expression.unary.NegationExpression;
-import org.apache.iotdb.db.query.expression.unary.TimeSeriesOperand;
-
-import java.nio.ByteBuffer;
-
public enum ExpressionType {
- Addition((short) 0),
- Division((short) 1),
- EqualTo((short) 2),
- Greater_Equal((short) 3),
- Greater_Than((short) 4),
- Less_Equal((short) 5),
- Less_Than((short) 6),
- Logic_And((short) 7),
- Logic_Or((short) 8),
- Modulo((short) 9),
- Multiplication((short) 10),
- Non_Equal((short) 11),
- Subtraction((short) 12),
- Function((short) 13),
- Logic_Not((short) 14),
- Negation((short) 15),
- TimeSeries((short) 16),
- Constant((short) 17);
+ ADDITION((short) 0),
+ DIVISION((short) 1),
+ EQUAL_TO((short) 2),
+ GREATER_EQUAL((short) 3),
+ GREATER_THAN((short) 4),
+ LESS_EQUAL((short) 5),
+ LESS_THAN((short) 6),
+ LOGIC_AND((short) 7),
+ LOGIC_OR((short) 8),
+ MODULO((short) 9),
+ MULTIPLICATION((short) 10),
+ NON_EQUAL((short) 11),
+ SUBTRACTION((short) 12),
+ FUNCTION((short) 13),
+ LOGIC_NOT((short) 14),
+ NEGATION((short) 15),
+ TIME_SERIES((short) 16),
+ CONSTANT((short) 17),
+ IN((short) 18),
+ REGULAR((short) 19);
private final short expressionType;
@@ -65,51 +46,7 @@ public enum ExpressionType {
this.expressionType = expressionType;
}
- public void serialize(ByteBuffer buffer) {
- buffer.putShort(expressionType);
- }
-
- public static Expression deserialize(ByteBuffer byteBuffer) {
- short type = byteBuffer.getShort();
- switch (type) {
- case 0:
- return AdditionExpression.deserialize(byteBuffer);
- case 1:
- return DivisionExpression.deserialize(byteBuffer);
- case 2:
- return EqualToExpression.deserialize(byteBuffer);
- case 3:
- return GreaterEqualExpression.deserialize(byteBuffer);
- case 4:
- return GreaterThanExpression.deserialize(byteBuffer);
- case 5:
- return LessEqualExpression.deserialize(byteBuffer);
- case 6:
- return LessThanExpression.deserialize(byteBuffer);
- case 7:
- return LogicAndExpression.deserialize(byteBuffer);
- case 8:
- return LogicOrExpression.deserialize(byteBuffer);
- case 9:
- return ModuloExpression.deserialize(byteBuffer);
- case 10:
- return MultiplicationExpression.deserialize(byteBuffer);
- case 11:
- return NonEqualExpression.deserialize(byteBuffer);
- case 12:
- return SubtractionExpression.deserialize(byteBuffer);
- case 13:
- return FunctionExpression.deserialize(byteBuffer);
- case 14:
- return LogicNotExpression.deserialize(byteBuffer);
- case 15:
- return NegationExpression.deserialize(byteBuffer);
- case 16:
- return TimeSeriesOperand.deserialize(byteBuffer);
- case 17:
- return ConstantOperand.deserialize(byteBuffer);
- default:
- throw new IllegalArgumentException("Invalid expression type: " + type);
- }
+ public short getExpressionType() {
+ return expressionType;
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/ResultColumn.java b/server/src/main/java/org/apache/iotdb/db/query/expression/ResultColumn.java
index 7dc4d570a1..c2bc314b06 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/ResultColumn.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/ResultColumn.java
@@ -87,6 +87,12 @@ public class ResultColumn {
alias = null;
}
+ public ResultColumn(ByteBuffer byteBuffer) {
+ expression = Expression.deserialize(byteBuffer);
+ alias = ReadWriteIOUtils.readString(byteBuffer);
+ dataType = TSDataType.deserializeFrom(byteBuffer);
+ }
+
/**
* @param prefixPaths prefix paths in the from clause
* @param resultColumns used to collect the result columns
@@ -189,18 +195,13 @@ public class ResultColumn {
return getResultColumnName().equals(((ResultColumn) o).getResultColumnName());
}
- public void serialize(ByteBuffer byteBuffer) {
- expression.serialize(byteBuffer);
- ReadWriteIOUtils.write(alias, byteBuffer);
- dataType.serializeTo(byteBuffer);
+ public static void serialize(ResultColumn resultColumn, ByteBuffer byteBuffer) {
+ Expression.serialize(resultColumn.expression, byteBuffer);
+ ReadWriteIOUtils.write(resultColumn.alias, byteBuffer);
+ resultColumn.dataType.serializeTo(byteBuffer);
}
public static ResultColumn deserialize(ByteBuffer byteBuffer) {
- Expression expression = ExpressionType.deserialize(byteBuffer);
- String alias = ReadWriteIOUtils.readString(byteBuffer);
- TSDataType tsDataType = TSDataType.deserializeFrom(byteBuffer);
- ResultColumn resultColumn = new ResultColumn(expression, alias);
- resultColumn.dataType = tsDataType;
- return resultColumn;
+ return new ResultColumn(byteBuffer);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java
index 32ec1e6c59..9ad079daf1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticAdditionTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class AdditionExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public AdditionExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected ArithmeticBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -46,18 +49,8 @@ public class AdditionExpression extends BinaryExpression {
return "+";
}
- public static AdditionExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- AdditionExpression additionExpression =
- new AdditionExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- additionExpression.isConstantOperandCache = isConstantOperandCache;
- return additionExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Addition.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.ADDITION.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java
index cbc6539635..bedcdc4848 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java
@@ -58,6 +58,11 @@ public abstract class BinaryExpression extends Expression {
this.rightExpression = rightExpression;
}
+ protected BinaryExpression(ByteBuffer byteBuffer) {
+ this.leftExpression = Expression.deserialize(byteBuffer);
+ this.rightExpression = Expression.deserialize(byteBuffer);
+ }
+
public Expression getLeftExpression() {
return leftExpression;
}
@@ -295,8 +300,7 @@ public abstract class BinaryExpression extends Expression {
@Override
public void serialize(ByteBuffer byteBuffer) {
- super.serialize(byteBuffer);
- leftExpression.serialize(byteBuffer);
- rightExpression.serialize(byteBuffer);
+ Expression.serialize(leftExpression, byteBuffer);
+ Expression.serialize(rightExpression, byteBuffer);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java
index b905e1f6be..e72fe7ea86 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticDivisionTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class DivisionExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public DivisionExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected ArithmeticBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -46,18 +49,8 @@ public class DivisionExpression extends BinaryExpression {
return "/";
}
- public static DivisionExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- DivisionExpression divisionExpression =
- new DivisionExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- divisionExpression.isConstantOperandCache = isConstantOperandCache;
- return divisionExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Division.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.DIVISION.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/EqualToExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/EqualToExpression.java
index f6f487dfb8..d506f15ae6 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/EqualToExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/EqualToExpression.java
@@ -24,15 +24,19 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.CompareBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.CompareEqualToTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
public class EqualToExpression extends BinaryExpression {
+
public EqualToExpression(Expression leftExpression, Expression rightExpression) {
super(leftExpression, rightExpression);
}
+ public EqualToExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected CompareBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -44,18 +48,8 @@ public class EqualToExpression extends BinaryExpression {
return "=";
}
- public static EqualToExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- EqualToExpression equalToExpression =
- new EqualToExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- equalToExpression.isConstantOperandCache = isConstantOperandCache;
- return equalToExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.EqualTo.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.EQUAL_TO.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterEqualExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterEqualExpression.java
index 134763f6b5..2a7944dfb1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterEqualExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterEqualExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.CompareBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.CompareGreaterEqualTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class GreaterEqualExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public GreaterEqualExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected CompareBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -46,18 +49,8 @@ public class GreaterEqualExpression extends BinaryExpression {
return ">=";
}
- public static GreaterEqualExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- GreaterEqualExpression greaterEqualExpression =
- new GreaterEqualExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- greaterEqualExpression.isConstantOperandCache = isConstantOperandCache;
- return greaterEqualExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Greater_Equal.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.GREATER_EQUAL.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterThanExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterThanExpression.java
index ab2d51e329..40e3c26ae0 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterThanExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/GreaterThanExpression.java
@@ -24,15 +24,19 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.CompareBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.CompareGreaterThanTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
public class GreaterThanExpression extends BinaryExpression {
+
public GreaterThanExpression(Expression leftExpression, Expression rightExpression) {
super(leftExpression, rightExpression);
}
+ public GreaterThanExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected CompareBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -45,18 +49,8 @@ public class GreaterThanExpression extends BinaryExpression {
return ">";
}
- public static GreaterThanExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- GreaterThanExpression greaterThanExpression =
- new GreaterThanExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- greaterThanExpression.isConstantOperandCache = isConstantOperandCache;
- return greaterThanExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Greater_Than.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.GREATER_THAN.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessEqualExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessEqualExpression.java
index c12b860e31..9fe0213afa 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessEqualExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessEqualExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.CompareBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.CompareLessEqualTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class LessEqualExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public LessEqualExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected CompareBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -45,18 +48,8 @@ public class LessEqualExpression extends BinaryExpression {
return "<=";
}
- public static LessEqualExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- LessEqualExpression lessEqualExpression =
- new LessEqualExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- lessEqualExpression.isConstantOperandCache = isConstantOperandCache;
- return lessEqualExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Less_Equal.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.LESS_EQUAL.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessThanExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessThanExpression.java
index a94fb180cc..e0a9e2e4f5 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessThanExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LessThanExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.CompareBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.CompareLessThanTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class LessThanExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public LessThanExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected CompareBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -45,18 +48,8 @@ public class LessThanExpression extends BinaryExpression {
return "<";
}
- public static LessThanExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- LessThanExpression lessThanExpression =
- new LessThanExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- lessThanExpression.isConstantOperandCache = isConstantOperandCache;
- return lessThanExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Less_Than.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.LESS_THAN.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicAndExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicAndExpression.java
index 817c3e64b1..a35ef9cf8c 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicAndExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicAndExpression.java
@@ -24,15 +24,19 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.LogicAndTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.LogicBinaryTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
public class LogicAndExpression extends BinaryExpression {
+
public LogicAndExpression(Expression leftExpression, Expression rightExpression) {
super(leftExpression, rightExpression);
}
+ public LogicAndExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected LogicBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -44,18 +48,8 @@ public class LogicAndExpression extends BinaryExpression {
return "&";
}
- public static LogicAndExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- LogicAndExpression logicAndExpression =
- new LogicAndExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- logicAndExpression.isConstantOperandCache = isConstantOperandCache;
- return logicAndExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Logic_And.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.LOGIC_AND.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicOrExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicOrExpression.java
index 9a77e3ff2c..2c031fb746 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicOrExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/LogicOrExpression.java
@@ -24,15 +24,19 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.LogicBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.LogicOrTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
public class LogicOrExpression extends BinaryExpression {
+
public LogicOrExpression(Expression leftExpression, Expression rightExpression) {
super(leftExpression, rightExpression);
}
+ public LogicOrExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected LogicBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -44,18 +48,8 @@ public class LogicOrExpression extends BinaryExpression {
return "|";
}
- public static LogicOrExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- LogicOrExpression logicOrExpression =
- new LogicOrExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- logicOrExpression.isConstantOperandCache = isConstantOperandCache;
- return logicOrExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Logic_Or.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.LOGIC_OR.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java
index 04832c0ab1..39f1b90a3f 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticModuloTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class ModuloExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public ModuloExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected ArithmeticBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -45,18 +48,8 @@ public class ModuloExpression extends BinaryExpression {
return "%";
}
- public static ModuloExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- ModuloExpression moduloExpression =
- new ModuloExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- moduloExpression.isConstantOperandCache = isConstantOperandCache;
- return moduloExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Modulo.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.MODULO.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java
index 1336382923..86a3539c10 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticMultiplicationTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class MultiplicationExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public MultiplicationExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected ArithmeticBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -46,18 +49,8 @@ public class MultiplicationExpression extends BinaryExpression {
return "*";
}
- public static MultiplicationExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- MultiplicationExpression multiplicationExpression =
- new MultiplicationExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- multiplicationExpression.isConstantOperandCache = isConstantOperandCache;
- return multiplicationExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Multiplication.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.MULTIPLICATION.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/NonEqualExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/NonEqualExpression.java
index ef9e5bbd15..159ff11522 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/NonEqualExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/NonEqualExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.CompareBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.CompareNonEqualTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class NonEqualExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public NonEqualExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected CompareBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -45,18 +48,8 @@ public class NonEqualExpression extends BinaryExpression {
return "!=";
}
- public static NonEqualExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- NonEqualExpression nonEqualExpression =
- new NonEqualExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- nonEqualExpression.isConstantOperandCache = isConstantOperandCache;
- return nonEqualExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Non_Equal.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.NON_EQUAL.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java
index 05194fadae..dd91f9e7d5 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticSubtractionTransformer;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
@@ -34,6 +33,10 @@ public class SubtractionExpression extends BinaryExpression {
super(leftExpression, rightExpression);
}
+ public SubtractionExpression(ByteBuffer byteBuffer) {
+ super(byteBuffer);
+ }
+
@Override
protected ArithmeticBinaryTransformer constructTransformer(
LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) {
@@ -46,18 +49,8 @@ public class SubtractionExpression extends BinaryExpression {
return "-";
}
- public static SubtractionExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- SubtractionExpression subtractionExpression =
- new SubtractionExpression(
- ExpressionType.deserialize(buffer), ExpressionType.deserialize(buffer));
- subtractionExpression.isConstantOperandCache = isConstantOperandCache;
- return subtractionExpression;
- }
-
@Override
- public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Subtraction.serialize(byteBuffer);
- super.serialize(byteBuffer);
+ protected short getExpressionType() {
+ return ExpressionType.SUBTRACTION.getExpressionType();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/ConstantOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/ConstantOperand.java
index 93e0c947e5..be6e8c7189 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/ConstantOperand.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/ConstantOperand.java
@@ -50,9 +50,14 @@ public class ConstantOperand extends Expression {
private final String valueString;
private final TSDataType dataType;
- public ConstantOperand(TSDataType dataType, String str) {
+ public ConstantOperand(TSDataType dataType, String valueString) {
this.dataType = Validate.notNull(dataType);
- this.valueString = Validate.notNull(str);
+ this.valueString = Validate.notNull(valueString);
+ }
+
+ public ConstantOperand(ByteBuffer byteBuffer) {
+ dataType = TSDataType.deserializeFrom(byteBuffer);
+ valueString = ReadWriteIOUtils.readString(byteBuffer);
}
public TSDataType getDataType() {
@@ -140,20 +145,14 @@ public class ConstantOperand extends Expression {
return valueString;
}
- public static ConstantOperand deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- String valueStr = ReadWriteIOUtils.readString(buffer);
- TSDataType tsDataType = TSDataType.deserializeFrom(buffer);
- ConstantOperand constantOperand = new ConstantOperand(tsDataType, valueStr);
- constantOperand.isConstantOperandCache = isConstantOperandCache;
- return constantOperand;
+ @Override
+ protected short getExpressionType() {
+ return ExpressionType.CONSTANT.getExpressionType();
}
@Override
public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Constant.serialize(byteBuffer);
- super.serialize(byteBuffer);
- ReadWriteIOUtils.write(valueString, byteBuffer);
dataType.serializeTo(byteBuffer);
+ ReadWriteIOUtils.write(valueString, byteBuffer);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
index 8712dd5641..bc30f1c58c 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
@@ -88,6 +88,7 @@ public class FunctionExpression extends Expression {
this.functionName = functionName;
functionAttributes = new LinkedHashMap<>();
expressions = new ArrayList<>();
+
isBuiltInAggregationFunctionExpression =
SQLConstant.getNativeFunctionNames().contains(functionName.toLowerCase());
isConstantOperandCache = true;
@@ -98,6 +99,7 @@ public class FunctionExpression extends Expression {
this.functionName = functionName;
this.functionAttributes = functionAttributes;
this.expressions = expressions;
+
isBuiltInAggregationFunctionExpression =
SQLConstant.getNativeFunctionNames().contains(functionName.toLowerCase());
isConstantOperandCache = expressions.stream().anyMatch(Expression::isConstantOperand);
@@ -109,6 +111,26 @@ public class FunctionExpression extends Expression {
|| v.isBuiltInAggregationFunctionExpression());
}
+ public FunctionExpression(ByteBuffer byteBuffer) {
+ functionName = ReadWriteIOUtils.readString(byteBuffer);
+ functionAttributes = ReadWriteIOUtils.readMap(byteBuffer);
+ int expressionSize = ReadWriteIOUtils.readInt(byteBuffer);
+ List<Expression> expressions = new ArrayList<>();
+ for (int i = 0; i < expressionSize; i++) {
+ expressions.add(Expression.deserialize(byteBuffer));
+ }
+
+ isBuiltInAggregationFunctionExpression =
+ SQLConstant.getNativeFunctionNames().contains(functionName);
+ isConstantOperandCache = expressions.stream().anyMatch(Expression::isConstantOperand);
+ isUserDefinedAggregationFunctionExpression =
+ expressions.stream()
+ .anyMatch(
+ v ->
+ v.isUserDefinedAggregationFunctionExpression()
+ || v.isBuiltInAggregationFunctionExpression());
+ }
+
@Override
public boolean isBuiltInAggregationFunctionExpression() {
return isBuiltInAggregationFunctionExpression;
@@ -432,31 +454,18 @@ public class FunctionExpression extends Expression {
return parametersString;
}
- public static FunctionExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- String functionName = ReadWriteIOUtils.readString(buffer);
- Map<String, String> functionAttributes = ReadWriteIOUtils.readMap(buffer);
- int expressionSize = ReadWriteIOUtils.readInt(buffer);
- List<Expression> expressions = new ArrayList<>();
- for (int i = 0; i < expressionSize; i++) {
- expressions.add(ExpressionType.deserialize(buffer));
- }
-
- FunctionExpression functionExpression =
- new FunctionExpression(functionName, functionAttributes, expressions);
- functionExpression.isConstantOperandCache = isConstantOperandCache;
- return functionExpression;
+ @Override
+ protected short getExpressionType() {
+ return ExpressionType.FUNCTION.getExpressionType();
}
@Override
public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Function.serialize(byteBuffer);
- super.serialize(byteBuffer);
ReadWriteIOUtils.write(functionName, byteBuffer);
ReadWriteIOUtils.write(functionAttributes, byteBuffer);
ReadWriteIOUtils.write(expressions.size(), byteBuffer);
for (Expression expression : expressions) {
- expression.serialize(byteBuffer);
+ Expression.serialize(expression, byteBuffer);
}
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/LogicNotExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/LogicNotExpression.java
index d72aed288b..0883325779 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/LogicNotExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/LogicNotExpression.java
@@ -38,7 +38,6 @@ import org.apache.iotdb.db.query.udf.core.layer.SingleInputColumnSingleReference
import org.apache.iotdb.db.query.udf.core.transformer.LogicNotTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.Transformer;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -50,12 +49,17 @@ import java.util.Map;
import java.util.Set;
public class LogicNotExpression extends Expression {
- protected Expression expression;
+
+ private final Expression expression;
public LogicNotExpression(Expression expression) {
this.expression = expression;
}
+ public LogicNotExpression(ByteBuffer byteBuffer) {
+ expression = Expression.deserialize(byteBuffer);
+ }
+
public Expression getExpression() {
return expression;
}
@@ -197,18 +201,13 @@ public class LogicNotExpression extends Expression {
}
}
- public static LogicNotExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- Expression expression = ExpressionType.deserialize(buffer);
- LogicNotExpression logicNotExpression = new LogicNotExpression(expression);
- logicNotExpression.isConstantOperandCache = isConstantOperandCache;
- return logicNotExpression;
+ @Override
+ protected short getExpressionType() {
+ return ExpressionType.LOGIC_NOT.getExpressionType();
}
@Override
public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Logic_Not.serialize(byteBuffer);
- super.serialize(byteBuffer);
- expression.serialize(byteBuffer);
+ Expression.serialize(expression, byteBuffer);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java
index 5eea89d07a..0b263019d7 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java
@@ -38,7 +38,6 @@ import org.apache.iotdb.db.query.udf.core.layer.SingleInputColumnSingleReference
import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticNegationTransformer;
import org.apache.iotdb.db.query.udf.core.transformer.Transformer;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -51,12 +50,16 @@ import java.util.Set;
public class NegationExpression extends Expression {
- protected Expression expression;
+ private final Expression expression;
public NegationExpression(Expression expression) {
this.expression = expression;
}
+ public NegationExpression(ByteBuffer byteBuffer) {
+ expression = Expression.deserialize(byteBuffer);
+ }
+
public Expression getExpression() {
return expression;
}
@@ -198,18 +201,13 @@ public class NegationExpression extends Expression {
}
}
- public static NegationExpression deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- Expression expression = ExpressionType.deserialize(buffer);
- NegationExpression negationExpression = new NegationExpression(expression);
- negationExpression.isConstantOperandCache = isConstantOperandCache;
- return negationExpression;
+ @Override
+ protected short getExpressionType() {
+ return ExpressionType.NEGATION.getExpressionType();
}
@Override
public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.Negation.serialize(byteBuffer);
- super.serialize(byteBuffer);
- expression.serialize(byteBuffer);
+ Expression.serialize(expression, byteBuffer);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/RegularExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/RegularExpression.java
index 3a712c9b89..83dc86ca52 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/RegularExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/RegularExpression.java
@@ -27,12 +27,16 @@ import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
import org.apache.iotdb.db.mpp.sql.rewriter.WildcardsRemover;
import org.apache.iotdb.db.qp.physical.crud.UDTFPlan;
import org.apache.iotdb.db.query.expression.Expression;
+import org.apache.iotdb.db.query.expression.ExpressionType;
import org.apache.iotdb.db.query.udf.core.executor.UDTFContext;
import org.apache.iotdb.db.query.udf.core.executor.UDTFExecutor;
import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer;
import org.apache.iotdb.db.query.udf.core.layer.LayerMemoryAssigner;
import org.apache.iotdb.db.query.udf.core.layer.RawQueryInputLayer;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.commons.lang3.Validate;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -62,6 +66,12 @@ public class RegularExpression extends Expression {
this.pattern = pattern;
}
+ public RegularExpression(ByteBuffer byteBuffer) {
+ expression = Expression.deserialize(byteBuffer);
+ patternString = ReadWriteIOUtils.readString(byteBuffer);
+ pattern = Pattern.compile(Validate.notNull(patternString));
+ }
+
@Override
public void concat(
List<PartialPath> prefixPaths,
@@ -158,24 +168,24 @@ public class RegularExpression extends Expression {
}
@Override
- public boolean isTimeSeriesGeneratingFunctionExpression() {
- return !isUserDefinedAggregationFunctionExpression();
+ protected short getExpressionType() {
+ return ExpressionType.REGULAR.getExpressionType();
}
@Override
- public boolean isUserDefinedAggregationFunctionExpression() {
- return expression.isUserDefinedAggregationFunctionExpression()
- || expression.isBuiltInAggregationFunctionExpression();
+ public void serialize(ByteBuffer byteBuffer) {
+ Expression.serialize(expression, byteBuffer);
+ ReadWriteIOUtils.write(patternString, byteBuffer);
}
- public static RegularExpression deserialize(ByteBuffer buffer) {
- // TODO
- throw new RuntimeException();
+ @Override
+ public boolean isTimeSeriesGeneratingFunctionExpression() {
+ return !isUserDefinedAggregationFunctionExpression();
}
@Override
- public void serialize(ByteBuffer byteBuffer) {
- // TODO
- throw new RuntimeException();
+ public boolean isUserDefinedAggregationFunctionExpression() {
+ return expression.isUserDefinedAggregationFunctionExpression()
+ || expression.isBuiltInAggregationFunctionExpression();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java
index 4e9cfb5e11..2dbc60f42b 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java
@@ -38,7 +38,6 @@ import org.apache.iotdb.db.query.udf.core.layer.SingleInputColumnMultiReferenceI
import org.apache.iotdb.db.query.udf.core.layer.SingleInputColumnSingleReferenceIntermediateLayer;
import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.nio.ByteBuffer;
import java.time.ZoneId;
@@ -49,12 +48,16 @@ import java.util.Set;
public class TimeSeriesOperand extends Expression {
- protected PartialPath path;
+ private PartialPath path;
public TimeSeriesOperand(PartialPath path) {
this.path = path;
}
+ public TimeSeriesOperand(ByteBuffer byteBuffer) {
+ path = (PartialPath) PathDeserializeUtil.deserialize(byteBuffer);
+ }
+
public PartialPath getPath() {
return path;
}
@@ -163,18 +166,13 @@ public class TimeSeriesOperand extends Expression {
return path.isMeasurementAliasExists() ? path.getFullPathWithAlias() : path.getFullPath();
}
- public static TimeSeriesOperand deserialize(ByteBuffer buffer) {
- boolean isConstantOperandCache = ReadWriteIOUtils.readBool(buffer);
- PartialPath partialPath = (PartialPath) PathDeserializeUtil.deserialize(buffer);
- TimeSeriesOperand timeSeriesOperand = new TimeSeriesOperand(partialPath);
- timeSeriesOperand.isConstantOperandCache = isConstantOperandCache;
- return timeSeriesOperand;
+ @Override
+ protected short getExpressionType() {
+ return ExpressionType.TIME_SERIES.getExpressionType();
}
@Override
public void serialize(ByteBuffer byteBuffer) {
- ExpressionType.TimeSeries.serialize(byteBuffer);
- super.serialize(byteBuffer);
path.serialize(byteBuffer);
}
}