This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch calc_commons in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3f9f6930c502606ee899f6620feece68bed70e12 Author: shuwenwei <[email protected]> AuthorDate: Wed Apr 15 17:00:11 2026 +0800 move fill --- .../src/main/codegen/templates/constantFill.ftl | 6 +- .../src/main/codegen/templates/linearFill.ftl | 4 +- .../src/main/codegen/templates/previousFill.ftl | 6 +- .../templates/previousFillWithTimeDuration.ftl | 8 +- .../execution/operator/process/fill/IFill.java | 2 +- .../operator/process/fill/IFillFilter.java | 2 +- .../operator/process/fill/ILinearFill.java | 2 +- .../filter/AbstractMonthIntervalFillFilter.java | 4 +- .../fill/filter/FixedIntervalFillFilter.java | 4 +- .../fill/filter/MonthIntervalMSFillFilter.java | 2 +- .../fill/filter/MonthIntervalNSFillFilter.java | 2 +- .../fill/filter/MonthIntervalUSFillFilter.java | 2 +- .../process/fill/identity/IdentityFill.java | 4 +- .../process/fill/identity/IdentityLinearFill.java | 4 +- .../operator/process/fill/linear/LinearFill.java | 4 +- .../relational/ColumnTransformerBuilder.java | 6 +- .../plan/planner/OperatorGeneratorUtils.java | 174 ++++++++++++++++++++ .../plan/planner/TableOperatorGenerator.java | 24 +-- .../plan/udf/TableUDFUtils.java | 3 +- .../dag/util/CommonTransformUtils.java | 6 + .../operator/process/AbstractFillOperator.java | 2 +- .../process/AbstractLinearFillOperator.java | 2 +- .../process/PreviousFillWithGroupOperator.java | 2 +- .../operator/process/TableFillOperator.java | 2 +- .../operator/process/TableLinearFillOperator.java | 2 +- .../process/TableLinearFillWithGroupOperator.java | 2 +- .../operator/process/TreeFillOperator.java | 2 +- .../operator/process/TreeLinearFillOperator.java | 2 +- .../relational/aggregation/AccumulatorFactory.java | 2 +- .../config/metadata/ShowFunctionsTask.java | 2 +- .../planner/DataNodeTableOperatorGenerator.java | 2 +- .../plan/planner/OperatorGeneratorUtil.java | 2 +- .../plan/planner/OperatorTreeGenerator.java | 176 ++------------------- .../relational/analyzer/ExpressionTreeUtils.java | 2 +- .../PredicatePushIntoMetadataChecker.java | 4 - .../relational/metadata/TableMetadataImpl.java | 2 +- .../plan/relational/sql/ast/DeleteDevice.java | 2 +- .../schemaregion/impl/SchemaRegionMemoryImpl.java | 2 +- .../execution/operator/FillOperatorTest.java | 10 +- .../execution/operator/OperatorMemoryTest.java | 4 +- .../operator/TreeLinearFillOperatorTest.java | 8 +- .../fill/filter/MonthIntervalFillFilterTest.java | 4 + .../plan/relational/analyzer/TestMetadata.java | 2 +- 43 files changed, 272 insertions(+), 237 deletions(-) diff --git a/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl b/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl index 9ff15a15062..d4cb860c341 100644 --- a/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl +++ b/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl @@ -20,10 +20,10 @@ <#list allDataTypes.types as type> <#assign className = "${type.dataType?cap_first}ConstantFill"> - <@pp.changeOutputFile name="/org/apache/iotdb/db/queryengine/execution/operator/process/fill/constant/${className}.java" /> -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant; + <@pp.changeOutputFile name="/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/constant/${className}.java" /> +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.tsfile.read.common.block.column.${type.column}; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn; diff --git a/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl b/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl index f63b40bc379..acc3d72f270 100644 --- a/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl +++ b/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl @@ -21,8 +21,8 @@ <#list decimalDataTypes.types as type> <#assign className = "${type.dataType?cap_first}LinearFill"> - <@pp.changeOutputFile name="/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/${className}.java" /> -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear; + <@pp.changeOutputFile name="/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/linear/${className}.java" /> +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.column.${type.column}; diff --git a/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl b/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl index 8efa0bd0a7b..41c5227447a 100644 --- a/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl +++ b/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl @@ -21,10 +21,10 @@ <#list allDataTypes.types as type> <#assign className = "${type.dataType?cap_first}PreviousFill"> - <@pp.changeOutputFile name="/org/apache/iotdb/db/queryengine/execution/operator/process/fill/previous/${className}.java" /> -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous; + <@pp.changeOutputFile name="/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/previous/${className}.java" /> +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.column.${type.column}; import org.apache.tsfile.read.common.block.column.${type.column}Builder; diff --git a/iotdb-core/datanode/src/main/codegen/templates/previousFillWithTimeDuration.ftl b/iotdb-core/datanode/src/main/codegen/templates/previousFillWithTimeDuration.ftl index 4de0b724357..4a740be669a 100644 --- a/iotdb-core/datanode/src/main/codegen/templates/previousFillWithTimeDuration.ftl +++ b/iotdb-core/datanode/src/main/codegen/templates/previousFillWithTimeDuration.ftl @@ -21,11 +21,11 @@ <#list allDataTypes.types as type> <#assign className = "${type.dataType?cap_first}PreviousFillWithTimeDuration"> - <@pp.changeOutputFile name="/org/apache/iotdb/db/queryengine/execution/operator/process/fill/previous/${className}.java" /> -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous; + <@pp.changeOutputFile name="/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/previous/${className}.java" /> +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFillFilter; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.column.${type.column}; import org.apache.tsfile.read.common.block.column.${type.column}Builder; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/IFill.java similarity index 92% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/IFill.java index 009c106541a..ea52a14e1fb 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/IFill.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFillFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/IFillFilter.java similarity index 93% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFillFilter.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/IFillFilter.java index 736be974cab..631ceefaeb3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFillFilter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/IFillFilter.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill; public interface IFillFilter { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/ILinearFill.java similarity index 97% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/ILinearFill.java index 0dccba10546..e270b572b6b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/ILinearFill.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/AbstractMonthIntervalFillFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/AbstractMonthIntervalFillFilter.java similarity index 89% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/AbstractMonthIntervalFillFilter.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/AbstractMonthIntervalFillFilter.java index 24a629189ab..5ec13d39f05 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/AbstractMonthIntervalFillFilter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/AbstractMonthIntervalFillFilter.java @@ -17,9 +17,9 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFillFilter; import java.time.ZoneId; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/FixedIntervalFillFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/FixedIntervalFillFilter.java similarity index 89% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/FixedIntervalFillFilter.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/FixedIntervalFillFilter.java index 840148438a7..9ccd6275a91 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/FixedIntervalFillFilter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/FixedIntervalFillFilter.java @@ -17,9 +17,9 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFillFilter; public class FixedIntervalFillFilter implements IFillFilter { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalMSFillFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalMSFillFilter.java similarity index 95% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalMSFillFilter.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalMSFillFilter.java index c8e56a8cca9..1fe26846eef 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalMSFillFilter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalMSFillFilter.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter; import java.time.Instant; import java.time.LocalDateTime; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalNSFillFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalNSFillFilter.java similarity index 96% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalNSFillFilter.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalNSFillFilter.java index b2c389a1d87..6260c679bb6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalNSFillFilter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalNSFillFilter.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter; import java.time.Instant; import java.time.LocalDateTime; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalUSFillFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalUSFillFilter.java similarity index 96% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalUSFillFilter.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalUSFillFilter.java index c99ede2702e..d8af68bb626 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalUSFillFilter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/filter/MonthIntervalUSFillFilter.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter; import java.time.Instant; import java.time.LocalDateTime; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/identity/IdentityFill.java similarity index 86% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/identity/IdentityFill.java index 74801480c64..f3329598b10 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/identity/IdentityFill.java @@ -17,9 +17,9 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.identity; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/identity/IdentityLinearFill.java similarity index 90% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/identity/IdentityLinearFill.java index 9ccd42ec51e..c87820757b3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/identity/IdentityLinearFill.java @@ -17,9 +17,9 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.identity; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/linear/LinearFill.java similarity index 98% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/linear/LinearFill.java index 5cd278cc0e7..e1813795cad 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/operator/process/fill/linear/LinearFill.java @@ -17,9 +17,9 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear; +package org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java similarity index 99% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java index 54b8ca1027d..e476a881ccf 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java @@ -17,10 +17,11 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.execution.relational; +package org.apache.iotdb.db.calc_commons.execution.relational; import org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinScalarFunction; import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer; +import org.apache.iotdb.db.calc_commons.plan.udf.TableUDFUtils; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.FailFunctionColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.TableCaseWhenThenColumnTransformer; @@ -196,7 +197,6 @@ import org.apache.iotdb.db.node_commons.plan.relational.type.TypeNotFoundExcepti import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext; import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider; import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; -import org.apache.iotdb.db.queryengine.plan.udf.TableUDFUtils; import org.apache.iotdb.udf.api.customizer.analysis.ScalarFunctionAnalysis; import org.apache.iotdb.udf.api.customizer.parameter.FunctionArguments; import org.apache.iotdb.udf.api.relational.ScalarFunction; @@ -238,9 +238,9 @@ import static org.apache.iotdb.db.calc_commons.transformation.dag.column.binary. import static org.apache.iotdb.db.calc_commons.transformation.dag.column.binary.factory.HmacStrategiesFactory.createConstantKeyHmacSha256Strategy; import static org.apache.iotdb.db.calc_commons.transformation.dag.column.binary.factory.HmacStrategiesFactory.createConstantKeyHmacSha512Strategy; import static org.apache.iotdb.db.calc_commons.transformation.dag.util.CommonTransformUtils.getEscapeCharacter; +import static org.apache.iotdb.db.calc_commons.transformation.dag.util.CommonTransformUtils.isStringLiteral; import static org.apache.iotdb.db.node_commons.plan.relational.type.InternalTypeManager.getTSDataType; import static org.apache.iotdb.db.node_commons.plan.relational.type.TypeSignatureTranslator.toTypeSignature; -import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.predicate.PredicatePushIntoMetadataChecker.isStringLiteral; import static org.apache.tsfile.read.common.type.BlobType.BLOB; import static org.apache.tsfile.read.common.type.BooleanType.BOOLEAN; import static org.apache.tsfile.read.common.type.DoubleType.DOUBLE; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/OperatorGeneratorUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/OperatorGeneratorUtils.java new file mode 100644 index 00000000000..6464ac4814b --- /dev/null +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/OperatorGeneratorUtils.java @@ -0,0 +1,174 @@ +/* + * Licensed 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.calc_commons.plan.planner; + +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.FixedIntervalFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.MonthIntervalMSFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.MonthIntervalNSFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.MonthIntervalUSFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.identity.IdentityLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.DoubleLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.FloatLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.IntLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.LongLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.BinaryPreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.BinaryPreviousFillWithTimeDuration; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.BooleanPreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.BooleanPreviousFillWithTimeDuration; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.DoublePreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.DoublePreviousFillWithTimeDuration; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.FloatPreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.FloatPreviousFillWithTimeDuration; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.IntPreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.IntPreviousFillWithTimeDuration; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.LongPreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.LongPreviousFillWithTimeDuration; + +import org.apache.tsfile.enums.TSDataType; +import org.apache.tsfile.utils.TimeDuration; + +import java.time.ZoneId; +import java.util.List; + +import static org.apache.iotdb.db.utils.TimestampPrecisionUtils.TIMESTAMP_PRECISION; + +public class OperatorGeneratorUtils { + public static final IdentityLinearFill IDENTITY_LINEAR_FILL = new IdentityLinearFill(); + public static final String UNKNOWN_DATATYPE = "Unknown data type: "; + + public static ILinearFill[] getLinearFill(int inputColumns, List<TSDataType> inputDataTypes) { + ILinearFill[] linearFill = new ILinearFill[inputColumns]; + for (int i = 0; i < inputColumns; i++) { + switch (inputDataTypes.get(i)) { + case INT32: + case DATE: + linearFill[i] = new IntLinearFill(); + break; + case INT64: + case TIMESTAMP: + linearFill[i] = new LongLinearFill(); + break; + case FLOAT: + linearFill[i] = new FloatLinearFill(); + break; + case DOUBLE: + linearFill[i] = new DoubleLinearFill(); + break; + case BOOLEAN: + case TEXT: + case STRING: + case BLOB: + case OBJECT: + linearFill[i] = IDENTITY_LINEAR_FILL; + break; + default: + throw new IllegalArgumentException(UNKNOWN_DATATYPE + inputDataTypes.get(i)); + } + } + return linearFill; + } + + public static IFill[] getPreviousFill( + int inputColumns, + List<TSDataType> inputDataTypes, + TimeDuration timeDurationThreshold, + ZoneId zoneId) { + IFillFilter filter; + if (timeDurationThreshold == null) { + filter = null; + } else if (!timeDurationThreshold.containsMonth()) { + filter = new FixedIntervalFillFilter(timeDurationThreshold.nonMonthDuration); + } else { + switch (TIMESTAMP_PRECISION) { + case "ms": + filter = + new MonthIntervalMSFillFilter( + timeDurationThreshold.monthDuration, + timeDurationThreshold.nonMonthDuration, + zoneId); + break; + case "us": + filter = + new MonthIntervalUSFillFilter( + timeDurationThreshold.monthDuration, + timeDurationThreshold.nonMonthDuration, + zoneId); + break; + case "ns": + filter = + new MonthIntervalNSFillFilter( + timeDurationThreshold.monthDuration, + timeDurationThreshold.nonMonthDuration, + zoneId); + break; + default: + // this case will never reach + throw new UnsupportedOperationException( + "not supported time_precision: " + TIMESTAMP_PRECISION); + } + } + + IFill[] previousFill = new IFill[inputColumns]; + for (int i = 0; i < inputColumns; i++) { + switch (inputDataTypes.get(i)) { + case BOOLEAN: + previousFill[i] = + filter == null + ? new BooleanPreviousFill() + : new BooleanPreviousFillWithTimeDuration(filter); + break; + case TEXT: + case STRING: + case BLOB: + case OBJECT: + previousFill[i] = + filter == null + ? new BinaryPreviousFill() + : new BinaryPreviousFillWithTimeDuration(filter); + break; + case INT32: + case DATE: + previousFill[i] = + filter == null ? new IntPreviousFill() : new IntPreviousFillWithTimeDuration(filter); + break; + case INT64: + case TIMESTAMP: + previousFill[i] = + filter == null + ? new LongPreviousFill() + : new LongPreviousFillWithTimeDuration(filter); + break; + case FLOAT: + previousFill[i] = + filter == null + ? new FloatPreviousFill() + : new FloatPreviousFillWithTimeDuration(filter); + break; + case DOUBLE: + previousFill[i] = + filter == null + ? new DoublePreviousFill() + : new DoublePreviousFillWithTimeDuration(filter); + break; + default: + throw new IllegalArgumentException(UNKNOWN_DATATYPE + inputDataTypes.get(i)); + } + } + return previousFill; + } +} diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java index ea6eadbf787..25850882370 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java @@ -19,6 +19,15 @@ package org.apache.iotdb.db.calc_commons.plan.planner; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.BinaryConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.BooleanConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.DoubleConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.FloatConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.IntConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.LongConstantFill; +import org.apache.iotdb.db.calc_commons.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColumnTransformer; import org.apache.iotdb.db.conf.IoTDBDescriptor; @@ -98,14 +107,6 @@ import org.apache.iotdb.db.queryengine.execution.operator.process.TableSortOpera import org.apache.iotdb.db.queryengine.execution.operator.process.TableStreamSortOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.TableTopKOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.ValuesOperator; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.BinaryConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.BooleanConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.DoubleConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.FloatConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.IntConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.LongConstantFill; import org.apache.iotdb.db.queryengine.execution.operator.process.function.TableFunctionLeafOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.function.TableFunctionOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.gapfill.GapFillWGroupWMoOperator; @@ -152,7 +153,6 @@ import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggr import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.HashAggregationOperator; import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.StreamingAggregationOperator; import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.StreamingHashAggregationOperator; -import org.apache.iotdb.db.queryengine.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider; import org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanContext; import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; @@ -210,6 +210,9 @@ import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.collect.Iterables.getOnlyElement; import static java.util.Objects.requireNonNull; import static org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinAggregationFunction.getAggregationTypeByFuncName; +import static org.apache.iotdb.db.calc_commons.plan.planner.OperatorGeneratorUtils.UNKNOWN_DATATYPE; +import static org.apache.iotdb.db.calc_commons.plan.planner.OperatorGeneratorUtils.getLinearFill; +import static org.apache.iotdb.db.calc_commons.plan.planner.OperatorGeneratorUtils.getPreviousFill; import static org.apache.iotdb.db.node_commons.execution.operator.source.relational.aggregation.grouped.hash.hash.GroupByHash.DEFAULT_GROUP_NUMBER; import static org.apache.iotdb.db.node_commons.plan.relational.planner.SortOrder.ASC_NULLS_FIRST; import static org.apache.iotdb.db.node_commons.plan.relational.planner.SortOrder.ASC_NULLS_LAST; @@ -226,9 +229,6 @@ import static org.apache.iotdb.db.queryengine.execution.operator.source.relation import static org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.AccumulatorFactory.createBuiltinAccumulator; import static org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.AccumulatorFactory.createGroupedAccumulator; import static org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.IDENTITY_FILL; -import static org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.UNKNOWN_DATATYPE; -import static org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.getLinearFill; -import static org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.getPreviousFill; import static org.apache.iotdb.db.utils.constant.SqlConstant.FIRST_AGGREGATION; import static org.apache.iotdb.db.utils.constant.SqlConstant.FIRST_BY_AGGREGATION; import static org.apache.iotdb.db.utils.constant.SqlConstant.LAST_AGGREGATION; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/udf/TableUDFUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/udf/TableUDFUtils.java similarity index 95% rename from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/udf/TableUDFUtils.java rename to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/udf/TableUDFUtils.java index 861bc701a49..a1e2a69ab76 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/udf/TableUDFUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/udf/TableUDFUtils.java @@ -17,11 +17,12 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.plan.udf; +package org.apache.iotdb.db.calc_commons.plan.udf; import org.apache.iotdb.common.rpc.thrift.FunctionType; import org.apache.iotdb.common.rpc.thrift.Model; import org.apache.iotdb.commons.udf.UDFInformation; +import org.apache.iotdb.db.queryengine.plan.udf.UDFManagementService; import org.apache.iotdb.udf.api.exception.UDFException; import org.apache.iotdb.udf.api.relational.AggregateFunction; import org.apache.iotdb.udf.api.relational.ScalarFunction; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/transformation/dag/util/CommonTransformUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/transformation/dag/util/CommonTransformUtils.java index 07772699854..92b282e9abc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/transformation/dag/util/CommonTransformUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/transformation/dag/util/CommonTransformUtils.java @@ -15,6 +15,8 @@ package org.apache.iotdb.db.calc_commons.transformation.dag.util; import org.apache.iotdb.db.exception.sql.SemanticException; +import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression; +import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.StringLiteral; import org.apache.tsfile.utils.Binary; @@ -37,4 +39,8 @@ public class CommonTransformUtils { throw new SemanticException("Escape string must be a single character"); } } + + public static boolean isStringLiteral(final Expression expression) { + return expression instanceof StringLiteral; + } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractFillOperator.java index 717a8522b1f..8fc3f822121 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractFillOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractFillOperator.java @@ -19,10 +19,10 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.iotdb.db.node_commons.execution.MemoryEstimationHelper; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; import com.google.common.util.concurrent.ListenableFuture; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractLinearFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractLinearFillOperator.java index 5254520cc67..2f2de6ff711 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractLinearFillOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractLinearFillOperator.java @@ -19,10 +19,10 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; import org.apache.iotdb.db.node_commons.execution.MemoryEstimationHelper; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; import com.google.common.util.concurrent.ListenableFuture; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/PreviousFillWithGroupOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/PreviousFillWithGroupOperator.java index 1b9059dea53..c10d73f403b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/PreviousFillWithGroupOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/PreviousFillWithGroupOperator.java @@ -19,10 +19,10 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.iotdb.db.node_commons.execution.MemoryEstimationHelper; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; import org.apache.iotdb.db.utils.datastructure.SortKey; import com.google.common.util.concurrent.ListenableFuture; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableFillOperator.java index dd55e6ca490..00edaee90d9 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableFillOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableFillOperator.java @@ -19,9 +19,9 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.TsBlock; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillOperator.java index cb51a26057f..df72932c540 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillOperator.java @@ -19,9 +19,9 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.TsBlock; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillWithGroupOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillWithGroupOperator.java index b9fb7c095b1..95550238fb3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillWithGroupOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TableLinearFillWithGroupOperator.java @@ -19,9 +19,9 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; import org.apache.iotdb.db.utils.datastructure.SortKey; import org.apache.tsfile.block.column.Column; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeFillOperator.java index b2c539533f7..12ee422fe2e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeFillOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeFillOperator.java @@ -19,9 +19,9 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.TsBlock; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeLinearFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeLinearFillOperator.java index a1e372c7a28..6e894c983e0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeLinearFillOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TreeLinearFillOperator.java @@ -19,9 +19,9 @@ package org.apache.iotdb.db.queryengine.execution.operator.process; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.TsBlock; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/AccumulatorFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/AccumulatorFactory.java index 1a4b9245cc4..2d4cb2942fc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/AccumulatorFactory.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/AccumulatorFactory.java @@ -21,6 +21,7 @@ package org.apache.iotdb.db.queryengine.execution.operator.source.relational.agg import org.apache.iotdb.common.rpc.thrift.TAggregationType; import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer; +import org.apache.iotdb.db.calc_commons.plan.udf.TableUDFUtils; import org.apache.iotdb.db.node_commons.execution.operator.source.relational.aggregation.grouped.UpdateMemory; import org.apache.iotdb.db.node_commons.execution.operator.source.relational.aggregation.grouped.hash.hash.MarkDistinctHash; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression; @@ -54,7 +55,6 @@ import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggr import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.GroupedVarianceAccumulator; import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.IntGroupedApproxMostFrequentAccumulator; import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.LongGroupedApproxMostFrequentAccumulator; -import org.apache.iotdb.db.queryengine.plan.udf.TableUDFUtils; import org.apache.iotdb.udf.api.customizer.parameter.FunctionArguments; import org.apache.iotdb.udf.api.relational.AggregateFunction; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java index b99e8c6fbf3..0feb6cda37a 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java @@ -26,6 +26,7 @@ import org.apache.iotdb.commons.udf.UDFInformation; import org.apache.iotdb.commons.udf.UDFType; import org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinAggregationFunction; import org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinScalarFunction; +import org.apache.iotdb.db.calc_commons.plan.udf.TableUDFUtils; import org.apache.iotdb.db.node_commons.plan.relational.function.TableBuiltinTableFunction; import org.apache.iotdb.db.queryengine.common.header.DatasetHeader; import org.apache.iotdb.db.queryengine.common.header.DatasetHeaderFactory; @@ -35,7 +36,6 @@ import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTas import org.apache.iotdb.db.queryengine.plan.udf.BuiltinAggregationFunction; import org.apache.iotdb.db.queryengine.plan.udf.BuiltinScalarFunction; import org.apache.iotdb.db.queryengine.plan.udf.BuiltinTimeSeriesGeneratingFunction; -import org.apache.iotdb.db.queryengine.plan.udf.TableUDFUtils; import org.apache.iotdb.db.queryengine.plan.udf.TreeUDFUtils; import org.apache.iotdb.rpc.TSStatusCode; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java index 82fc54055a5..7659c54c8e7 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java @@ -23,6 +23,7 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.schema.table.TsTable; import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema; +import org.apache.iotdb.db.calc_commons.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.calc_commons.plan.planner.TableOperatorGenerator; import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.unary.scalar.DateBinFunctionColumnTransformer; @@ -88,7 +89,6 @@ import org.apache.iotdb.db.queryengine.execution.operator.source.relational.Tree import org.apache.iotdb.db.queryengine.execution.operator.source.relational.TreeToTableViewAdaptorOperator; import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.LastDescAccumulator; import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.TableAggregator; -import org.apache.iotdb.db.queryengine.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeTTLCache; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metadata.read.CountSchemaMergeNode; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorGeneratorUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorGeneratorUtil.java index 071b064c141..9815bb4cd44 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorGeneratorUtil.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorGeneratorUtil.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.UNKNOWN_DATATYPE; +import static org.apache.iotdb.db.calc_commons.plan.planner.OperatorGeneratorUtils.UNKNOWN_DATATYPE; public class OperatorGeneratorUtil { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java index fd5a73de56f..52fdb04822e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java @@ -28,6 +28,15 @@ import org.apache.iotdb.commons.path.IFullPath; import org.apache.iotdb.commons.path.MeasurementPath; import org.apache.iotdb.commons.path.NonAlignedFullPath; import org.apache.iotdb.commons.path.PartialPath; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.BinaryConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.BooleanConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.DoubleConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.FloatConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.IntConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.LongConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.identity.IdentityFill; +import org.apache.iotdb.db.calc_commons.plan.planner.OperatorGeneratorUtils; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColumnTransformer; import org.apache.iotdb.db.conf.IoTDBDescriptor; @@ -85,37 +94,6 @@ import org.apache.iotdb.db.queryengine.execution.operator.process.TreeLinearFill import org.apache.iotdb.db.queryengine.execution.operator.process.TreeMergeSortOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.TreeSortOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.TreeTopKOperator; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFillFilter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.BinaryConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.BooleanConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.DoubleConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.FloatConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.IntConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.LongConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter.FixedIntervalFillFilter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter.MonthIntervalMSFillFilter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter.MonthIntervalNSFillFilter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter.MonthIntervalUSFillFilter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity.IdentityFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity.IdentityLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.DoubleLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.FloatLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.IntLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.LongLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.BinaryPreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.BinaryPreviousFillWithTimeDuration; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.BooleanPreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.BooleanPreviousFillWithTimeDuration; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.DoublePreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.DoublePreviousFillWithTimeDuration; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.FloatPreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.FloatPreviousFillWithTimeDuration; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.IntPreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.IntPreviousFillWithTimeDuration; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.LongPreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.LongPreviousFillWithTimeDuration; import org.apache.iotdb.db.queryengine.execution.operator.process.join.FullOuterTimeJoinOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.join.HorizontallyConcatOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.join.InnerTimeJoinOperator; @@ -291,7 +269,6 @@ import org.apache.tsfile.read.filter.operator.TimeFilterOperators.TimeGtEq; import org.apache.tsfile.read.reader.series.PaginationController; import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.Pair; -import org.apache.tsfile.utils.TimeDuration; import org.apache.tsfile.write.schema.IMeasurementSchema; import org.apache.tsfile.write.schema.MeasurementSchema; import org.slf4j.Logger; @@ -328,7 +305,6 @@ import static org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOper import static org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor.getAggregationTypeByFuncName; import static org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.SeriesScanOptions.updateFilterUsingTTL; import static org.apache.iotdb.db.queryengine.plan.statement.component.Ordering.ASC; -import static org.apache.iotdb.db.utils.TimestampPrecisionUtils.TIMESTAMP_PRECISION; /** This Visitor is responsible for transferring PlanNode Tree to Operator Tree. */ public class OperatorTreeGenerator implements PlanVisitor<Operator, LocalExecutionPlanContext> { @@ -347,14 +323,10 @@ public class OperatorTreeGenerator implements PlanVisitor<Operator, LocalExecuti public static final IdentityFill IDENTITY_FILL = new IdentityFill(); - private static final IdentityLinearFill IDENTITY_LINEAR_FILL = new IdentityLinearFill(); - private static final Comparator<Binary> ASC_BINARY_COMPARATOR = Comparator.naturalOrder(); private static final Comparator<Binary> DESC_BINARY_COMPARATOR = Comparator.reverseOrder(); - public static final String UNKNOWN_DATATYPE = "Unknown data type: "; - @Override public Operator visitPlan(PlanNode node, LocalExecutionPlanContext context) { throw new UnsupportedOperationException("should call the concrete visitXX() method"); @@ -1350,7 +1322,7 @@ public class OperatorTreeGenerator implements PlanVisitor<Operator, LocalExecuti case PREVIOUS: return new TreeFillOperator( operatorContext, - getPreviousFill( + OperatorGeneratorUtils.getPreviousFill( inputColumns, inputDataTypes, descriptor.getTimeDurationThreshold(), @@ -1358,7 +1330,9 @@ public class OperatorTreeGenerator implements PlanVisitor<Operator, LocalExecuti child); case LINEAR: return new TreeLinearFillOperator( - operatorContext, getLinearFill(inputColumns, inputDataTypes), child); + operatorContext, + OperatorGeneratorUtils.getLinearFill(inputColumns, inputDataTypes), + child); default: throw new IllegalArgumentException("Unknown fill policy: " + fillPolicy); } @@ -1398,133 +1372,13 @@ public class OperatorTreeGenerator implements PlanVisitor<Operator, LocalExecuti constantFill[i] = new DoubleConstantFill(literal.getDouble()); break; default: - throw new IllegalArgumentException(UNKNOWN_DATATYPE + inputDataTypes.get(i)); + throw new IllegalArgumentException( + OperatorGeneratorUtils.UNKNOWN_DATATYPE + inputDataTypes.get(i)); } } return constantFill; } - public static IFill[] getPreviousFill( - int inputColumns, - List<TSDataType> inputDataTypes, - TimeDuration timeDurationThreshold, - ZoneId zoneId) { - IFillFilter filter; - if (timeDurationThreshold == null) { - filter = null; - } else if (!timeDurationThreshold.containsMonth()) { - filter = new FixedIntervalFillFilter(timeDurationThreshold.nonMonthDuration); - } else { - switch (TIMESTAMP_PRECISION) { - case "ms": - filter = - new MonthIntervalMSFillFilter( - timeDurationThreshold.monthDuration, - timeDurationThreshold.nonMonthDuration, - zoneId); - break; - case "us": - filter = - new MonthIntervalUSFillFilter( - timeDurationThreshold.monthDuration, - timeDurationThreshold.nonMonthDuration, - zoneId); - break; - case "ns": - filter = - new MonthIntervalNSFillFilter( - timeDurationThreshold.monthDuration, - timeDurationThreshold.nonMonthDuration, - zoneId); - break; - default: - // this case will never reach - throw new UnsupportedOperationException( - "not supported time_precision: " + TIMESTAMP_PRECISION); - } - } - - IFill[] previousFill = new IFill[inputColumns]; - for (int i = 0; i < inputColumns; i++) { - switch (inputDataTypes.get(i)) { - case BOOLEAN: - previousFill[i] = - filter == null - ? new BooleanPreviousFill() - : new BooleanPreviousFillWithTimeDuration(filter); - break; - case TEXT: - case STRING: - case BLOB: - case OBJECT: - previousFill[i] = - filter == null - ? new BinaryPreviousFill() - : new BinaryPreviousFillWithTimeDuration(filter); - break; - case INT32: - case DATE: - previousFill[i] = - filter == null ? new IntPreviousFill() : new IntPreviousFillWithTimeDuration(filter); - break; - case INT64: - case TIMESTAMP: - previousFill[i] = - filter == null - ? new LongPreviousFill() - : new LongPreviousFillWithTimeDuration(filter); - break; - case FLOAT: - previousFill[i] = - filter == null - ? new FloatPreviousFill() - : new FloatPreviousFillWithTimeDuration(filter); - break; - case DOUBLE: - previousFill[i] = - filter == null - ? new DoublePreviousFill() - : new DoublePreviousFillWithTimeDuration(filter); - break; - default: - throw new IllegalArgumentException(UNKNOWN_DATATYPE + inputDataTypes.get(i)); - } - } - return previousFill; - } - - public static ILinearFill[] getLinearFill(int inputColumns, List<TSDataType> inputDataTypes) { - ILinearFill[] linearFill = new ILinearFill[inputColumns]; - for (int i = 0; i < inputColumns; i++) { - switch (inputDataTypes.get(i)) { - case INT32: - case DATE: - linearFill[i] = new IntLinearFill(); - break; - case INT64: - case TIMESTAMP: - linearFill[i] = new LongLinearFill(); - break; - case FLOAT: - linearFill[i] = new FloatLinearFill(); - break; - case DOUBLE: - linearFill[i] = new DoubleLinearFill(); - break; - case BOOLEAN: - case TEXT: - case STRING: - case BLOB: - case OBJECT: - linearFill[i] = IDENTITY_LINEAR_FILL; - break; - default: - throw new IllegalArgumentException(UNKNOWN_DATATYPE + inputDataTypes.get(i)); - } - } - return linearFill; - } - @Override public Operator visitTransform(TransformNode node, LocalExecutionPlanContext context) { final OperatorContext operatorContext = diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionTreeUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionTreeUtils.java index e2bd46ffeb6..18a367b010f 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionTreeUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionTreeUtils.java @@ -20,6 +20,7 @@ package org.apache.iotdb.db.queryengine.plan.relational.analyzer; import org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinAggregationFunction; +import org.apache.iotdb.db.calc_commons.plan.udf.TableUDFUtils; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.DereferenceExpression; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.FunctionCall; @@ -27,7 +28,6 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Identifier; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Node; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.QualifiedName; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.DefaultExpressionTraversalVisitor; -import org.apache.iotdb.db.queryengine.plan.udf.TableUDFUtils; import com.google.common.collect.ImmutableList; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/PredicatePushIntoMetadataChecker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/PredicatePushIntoMetadataChecker.java index 9d8992ae3bb..8d6d7161567 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/PredicatePushIntoMetadataChecker.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/PredicatePushIntoMetadataChecker.java @@ -259,8 +259,4 @@ public class PredicatePushIntoMetadataChecker extends AstVisitor<Boolean, Void> protected Boolean visitNullIfExpression(final NullIfExpression node, final Void context) { return Boolean.FALSE; } - - public static boolean isStringLiteral(final Expression expression) { - return expression instanceof StringLiteral; - } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java index ac8f4d725e5..c6351934348 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java @@ -29,6 +29,7 @@ import org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinAggregationFu import org.apache.iotdb.commons.udf.builtin.relational.TableBuiltinScalarFunction; import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer; import org.apache.iotdb.db.calc_commons.plan.relational.metadata.CommonMetadataUtils; +import org.apache.iotdb.db.calc_commons.plan.udf.TableUDFUtils; import org.apache.iotdb.db.exception.load.LoadAnalyzeTableColumnDisorderException; import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.node_commons.common.SessionInfo; @@ -51,7 +52,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.TableDev import org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.TableDeviceSchemaValidator; import org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.TableHeaderSchemaValidator; import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControl; -import org.apache.iotdb.db.queryengine.plan.udf.TableUDFUtils; import org.apache.iotdb.db.schemaengine.table.DataNodeTableCache; import org.apache.iotdb.db.utils.constant.SqlConstant; import org.apache.iotdb.udf.api.customizer.analysis.AggregateFunctionAnalysis; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java index 888f3f51e81..c061fed4405 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java @@ -24,6 +24,7 @@ import org.apache.iotdb.commons.schema.column.ColumnHeader; import org.apache.iotdb.commons.schema.filter.SchemaFilter; import org.apache.iotdb.commons.schema.table.TsTable; import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema; +import org.apache.iotdb.db.calc_commons.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColumnTransformer; import org.apache.iotdb.db.node_commons.common.SessionInfo; @@ -35,7 +36,6 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.NodeLocation; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; import org.apache.iotdb.db.queryengine.execution.operator.schema.source.DeviceBlackListConstructor; import org.apache.iotdb.db.queryengine.execution.operator.schema.source.TableDeviceQuerySource; -import org.apache.iotdb.db.queryengine.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils; import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider; import org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java index 82bbf304651..25d65f513a5 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java @@ -37,6 +37,7 @@ import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression; import org.apache.iotdb.commons.utils.FileUtils; import org.apache.iotdb.commons.utils.PathUtils; import org.apache.iotdb.consensus.ConsensusFactory; +import org.apache.iotdb.db.calc_commons.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColumnTransformer; import org.apache.iotdb.db.conf.IoTDBConfig; @@ -54,7 +55,6 @@ import org.apache.iotdb.db.queryengine.common.schematree.ClusterSchemaTree; import org.apache.iotdb.db.queryengine.execution.operator.schema.source.DeviceAttributeUpdater; import org.apache.iotdb.db.queryengine.execution.operator.schema.source.DeviceBlackListConstructor; import org.apache.iotdb.db.queryengine.execution.operator.schema.source.TableDeviceQuerySource; -import org.apache.iotdb.db.queryengine.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider; import org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metadata.write.AlterEncodingCompressorNode; diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java index 3cac4643200..bec4de93bf4 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java @@ -19,6 +19,11 @@ package org.apache.iotdb.db.queryengine.execution.operator; import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.constant.DoubleConstantFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.FixedIntervalFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.IntPreviousFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.previous.IntPreviousFillWithTimeDuration; import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.common.FragmentInstanceId; import org.apache.iotdb.db.queryengine.common.PlanFragmentId; @@ -27,11 +32,6 @@ import org.apache.iotdb.db.queryengine.execution.driver.DriverContext; import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext; import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceStateMachine; import org.apache.iotdb.db.queryengine.execution.operator.process.TreeFillOperator; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant.DoubleConstantFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter.FixedIntervalFillFilter; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.IntPreviousFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.IntPreviousFillWithTimeDuration; import com.google.common.collect.ImmutableList; import org.apache.tsfile.enums.TSDataType; diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java index 2e7dfb726d2..186677df733 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java @@ -25,6 +25,8 @@ import org.apache.iotdb.commons.path.AlignedFullPath; import org.apache.iotdb.commons.path.IFullPath; import org.apache.iotdb.commons.path.MeasurementPath; import org.apache.iotdb.commons.path.NonAlignedFullPath; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.IFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.LinearFill; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.binary.ArithmeticAdditionColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.binary.CompareLessEqualColumnTransformer; @@ -52,8 +54,6 @@ import org.apache.iotdb.db.queryengine.execution.operator.process.TreeFillOperat import org.apache.iotdb.db.queryengine.execution.operator.process.TreeIntoOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.TreeLinearFillOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.TreeSortOperator; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.LinearFill; import org.apache.iotdb.db.queryengine.execution.operator.process.join.FullOuterTimeJoinOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.join.HorizontallyConcatOperator; import org.apache.iotdb.db.queryengine.execution.operator.process.last.LastQueryCollectOperator; diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TreeLinearFillOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TreeLinearFillOperatorTest.java index 778c381a581..039db3ded11 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TreeLinearFillOperatorTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TreeLinearFillOperatorTest.java @@ -19,6 +19,10 @@ package org.apache.iotdb.db.queryengine.execution.operator; import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.ILinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.identity.IdentityLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.FloatLinearFill; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.linear.LinearFill; import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.common.FragmentInstanceId; import org.apache.iotdb.db.queryengine.common.PlanFragmentId; @@ -27,10 +31,6 @@ import org.apache.iotdb.db.queryengine.execution.driver.DriverContext; import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext; import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceStateMachine; import org.apache.iotdb.db.queryengine.execution.operator.process.TreeLinearFillOperator; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity.IdentityLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.FloatLinearFill; -import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.LinearFill; import com.google.common.collect.ImmutableList; import org.apache.tsfile.enums.TSDataType; diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalFillFilterTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalFillFilterTest.java index 04c81eb15f7..2cc5e6bb172 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalFillFilterTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/filter/MonthIntervalFillFilterTest.java @@ -19,6 +19,10 @@ package org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.MonthIntervalMSFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.MonthIntervalNSFillFilter; +import org.apache.iotdb.db.calc_commons.execution.operator.process.fill.filter.MonthIntervalUSFillFilter; + import org.junit.Test; import java.time.Instant; diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMetadata.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMetadata.java index bbcbfd169af..f152a9edff2 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMetadata.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMetadata.java @@ -27,6 +27,7 @@ import org.apache.iotdb.commons.path.PathPatternTree; import org.apache.iotdb.commons.schema.table.InsertNodeMeasurementInfo; import org.apache.iotdb.commons.schema.table.TsTable; import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; +import org.apache.iotdb.db.calc_commons.plan.udf.TableUDFUtils; import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.node_commons.common.SessionInfo; import org.apache.iotdb.db.node_commons.plan.relational.function.OperatorType; @@ -59,7 +60,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.metadata.TreeDeviceViewSc import org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.TableHeaderSchemaValidator; import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControl; import org.apache.iotdb.db.queryengine.plan.udf.BuiltinAggregationFunction; -import org.apache.iotdb.db.queryengine.plan.udf.TableUDFUtils; import org.apache.iotdb.db.schemaengine.table.InformationSchemaUtils; import org.apache.iotdb.mpp.rpc.thrift.TRegionRouteReq; import org.apache.iotdb.udf.api.relational.TableFunction;
