This is an automated email from the ASF dual-hosted git repository. xiangweiwei pushed a commit to branch removeTokenType in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 25259cf67881ae4347b0b10d760c21f462b3e85d Author: Alima777 <[email protected]> AuthorDate: Sun Jun 6 15:44:10 2021 +0800 Fix bugs --- .../qp/logical/crud/AggregationQueryOperator.java | 26 ++++++++----------- .../db/qp/logical/crud/FillQueryOperator.java | 28 ++++++++------------- .../qp/logical/crud/GroupByFillQueryOperator.java | 29 +++++++++++----------- .../db/qp/logical/crud/GroupByQueryOperator.java | 26 ++++++++----------- .../iotdb/db/qp/logical/crud/QueryOperator.java | 22 +++++++++------- .../iotdb/db/qp/logical/crud/UDFQueryOperator.java | 10 +++----- 6 files changed, 63 insertions(+), 78 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java index e18e873..f21c5a8 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java @@ -79,8 +79,8 @@ public class AggregationQueryOperator extends QueryOperator { public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator) throws QueryProcessException { return isAlignByDevice() - ? this.generateAggregationAlignByDevicePlan(generator) - : this.generateRawDataQueryPlan(generator, new AggregationPlan()); + ? this.generateAlignByDevicePlan(generator) + : super.generateRawDataQueryPlan(generator, initAggregationPlan(new AggregationPlan())); } private boolean verifyAllAggregationDataTypesEqual() throws MetadataException { @@ -103,12 +103,18 @@ public class AggregationQueryOperator extends QueryOperator { } } - protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan) + @Override + protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator) throws QueryProcessException { + AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); + alignByDevicePlan.setAggregationPlan(initAggregationPlan(new AggregationPlan())); + + return alignByDevicePlan; + } + + protected AggregationPlan initAggregationPlan(QueryPlan queryPlan) throws QueryProcessException { AggregationPlan aggregationPlan = (AggregationPlan) queryPlan; aggregationPlan.setAggregations(selectComponent.getAggregationFunctions()); - super.generateRawDataQueryPlan(generator, aggregationPlan); - if (isGroupByLevel()) { aggregationPlan.setLevel(specialClauseComponent.getLevel()); try { @@ -119,16 +125,6 @@ public class AggregationQueryOperator extends QueryOperator { throw new LogicalOperatorException(e); } } - return aggregationPlan; } - - protected AlignByDevicePlan generateAggregationAlignByDevicePlan(PhysicalGenerator generator) - throws QueryProcessException { - AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); - alignByDevicePlan.setAggregationPlan( - (AggregationPlan) generateRawDataQueryPlan(generator, new AggregationPlan())); - - return alignByDevicePlan; - } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java index 56e0bb1..579016c 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java @@ -25,7 +25,6 @@ import org.apache.iotdb.db.qp.constant.FilterConstant.FilterType; import org.apache.iotdb.db.qp.physical.PhysicalPlan; import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan; import org.apache.iotdb.db.qp.physical.crud.FillQueryPlan; -import org.apache.iotdb.db.qp.physical.crud.QueryPlan; import org.apache.iotdb.db.qp.strategy.PhysicalGenerator; public class FillQueryOperator extends QueryOperator { @@ -55,29 +54,24 @@ public class FillQueryOperator extends QueryOperator { throws QueryProcessException { return isAlignByDevice() ? this.generateAlignByDevicePlan(generator) - : this.generateRawDataQueryPlan(generator, new FillQueryPlan()); - } - - @Override - protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan) - throws QueryProcessException { - FillQueryPlan fillQueryPlan = (FillQueryPlan) queryPlan; - FilterOperator timeFilter = whereComponent.getFilterOperator(); - long time = Long.parseLong(((BasicFunctionOperator) timeFilter).getValue()); - fillQueryPlan.setQueryTime(time); - fillQueryPlan.setFillType(((FillClauseComponent) specialClauseComponent).getFillTypes()); - queryPlan = super.generateRawDataQueryPlan(generator, fillQueryPlan); - - return queryPlan; + : super.generateRawDataQueryPlan(generator, initFillQueryPlan()); } @Override protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator) throws QueryProcessException { AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); - alignByDevicePlan.setFillQueryPlan( - (FillQueryPlan) generateRawDataQueryPlan(generator, new FillQueryPlan())); + alignByDevicePlan.setFillQueryPlan(initFillQueryPlan()); return alignByDevicePlan; } + + private FillQueryPlan initFillQueryPlan() { + FillQueryPlan fillQueryPlan = new FillQueryPlan(); + FilterOperator timeFilter = whereComponent.getFilterOperator(); + long time = Long.parseLong(((BasicFunctionOperator) timeFilter).getValue()); + fillQueryPlan.setQueryTime(time); + fillQueryPlan.setFillType(((FillClauseComponent) specialClauseComponent).getFillTypes()); + return fillQueryPlan; + } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java index 1cd1f53..ac621cf 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java @@ -45,29 +45,28 @@ public class GroupByFillQueryOperator extends GroupByQueryOperator { public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator) throws QueryProcessException { return isAlignByDevice() - ? this.generateAggregationAlignByDevicePlan(generator) - : this.generateRawDataQueryPlan(generator, new GroupByTimeFillPlan()); + ? this.generateAlignByDevicePlan(generator) + : super.generateRawDataQueryPlan( + generator, initGroupByTimeFillPlan(new GroupByTimeFillPlan())); } @Override - protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan) + protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator) throws QueryProcessException { - queryPlan = super.generateRawDataQueryPlan(generator, queryPlan); - GroupByTimeFillPlan groupByTimeFillPlan = (GroupByTimeFillPlan) queryPlan; - GroupByFillClauseComponent groupByFillClauseComponent = - (GroupByFillClauseComponent) specialClauseComponent; - groupByTimeFillPlan.setFillType(groupByFillClauseComponent.getFillTypes()); + AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); + alignByDevicePlan.setGroupByTimePlan(initGroupByTimeFillPlan(new GroupByTimeFillPlan())); - return queryPlan; + return alignByDevicePlan; } - @Override - protected AlignByDevicePlan generateAggregationAlignByDevicePlan(PhysicalGenerator generator) + protected GroupByTimeFillPlan initGroupByTimeFillPlan(QueryPlan queryPlan) throws QueryProcessException { - AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); - alignByDevicePlan.setGroupByTimePlan( - (GroupByTimeFillPlan) generateRawDataQueryPlan(generator, new GroupByTimeFillPlan())); + GroupByTimeFillPlan groupByTimeFillPlan = + (GroupByTimeFillPlan) super.initGroupByTimePlan(queryPlan); + GroupByFillClauseComponent groupByFillClauseComponent = + (GroupByFillClauseComponent) specialClauseComponent; + groupByTimeFillPlan.setFillType(groupByFillClauseComponent.getFillTypes()); - return alignByDevicePlan; + return groupByTimeFillPlan; } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java index 8428f46..3ed87ec 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java @@ -32,16 +32,21 @@ public class GroupByQueryOperator extends AggregationQueryOperator { public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator) throws QueryProcessException { return isAlignByDevice() - ? this.generateAggregationAlignByDevicePlan(generator) - : this.generateRawDataQueryPlan(generator, new GroupByTimePlan()); + ? this.generateAlignByDevicePlan(generator) + : super.generateRawDataQueryPlan(generator, initGroupByTimePlan(new GroupByTimePlan())); } @Override - protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan) + protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator) throws QueryProcessException { - queryPlan = super.generateRawDataQueryPlan(generator, queryPlan); + AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); + alignByDevicePlan.setGroupByTimePlan(initGroupByTimePlan(new GroupByTimePlan())); + + return alignByDevicePlan; + } - GroupByTimePlan groupByTimePlan = (GroupByTimePlan) queryPlan; + protected GroupByTimePlan initGroupByTimePlan(QueryPlan queryPlan) throws QueryProcessException { + GroupByTimePlan groupByTimePlan = (GroupByTimePlan) initAggregationPlan(queryPlan); GroupByClauseComponent groupByClauseComponent = (GroupByClauseComponent) specialClauseComponent; groupByTimePlan.setInterval(groupByClauseComponent.getUnit()); @@ -49,6 +54,7 @@ public class GroupByQueryOperator extends AggregationQueryOperator { groupByTimePlan.setSlidingStep(groupByClauseComponent.getSlidingStep()); groupByTimePlan.setSlidingStepByMonth(groupByClauseComponent.isSlidingStepByMonth()); groupByTimePlan.setLeftCRightO(groupByClauseComponent.isLeftCRightO()); + if (!groupByClauseComponent.isLeftCRightO()) { groupByTimePlan.setStartTime(groupByClauseComponent.getStartTime() + 1); groupByTimePlan.setEndTime(groupByClauseComponent.getEndTime() + 1); @@ -59,14 +65,4 @@ public class GroupByQueryOperator extends AggregationQueryOperator { return groupByTimePlan; } - - @Override - protected AlignByDevicePlan generateAggregationAlignByDevicePlan(PhysicalGenerator generator) - throws QueryProcessException { - AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator); - alignByDevicePlan.setGroupByTimePlan( - (GroupByTimePlan) generateRawDataQueryPlan(generator, new GroupByTimePlan())); - - return alignByDevicePlan; - } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java index ec5fef9..f358efd 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java @@ -173,7 +173,6 @@ public class QueryOperator extends Operator { protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan) throws QueryProcessException { - RawDataQueryPlan rawDataQueryPlan = (RawDataQueryPlan) queryPlan; rawDataQueryPlan.setPaths(selectComponent.getPaths()); rawDataQueryPlan.setResultColumns(selectComponent.getResultColumns()); @@ -203,14 +202,7 @@ public class QueryOperator extends Operator { throw new QueryProcessException(e); } - if (specialClauseComponent != null) { - rawDataQueryPlan.setWithoutAllNull(specialClauseComponent.isWithoutAllNull()); - rawDataQueryPlan.setWithoutAnyNull(specialClauseComponent.isWithoutAnyNull()); - rawDataQueryPlan.setRowLimit(specialClauseComponent.getRowLimit()); - rawDataQueryPlan.setRowOffset(specialClauseComponent.getRowOffset()); - rawDataQueryPlan.setAscending(specialClauseComponent.isAscending()); - rawDataQueryPlan.setAlignByTime(specialClauseComponent.isAlignByTime()); - } + convertSpecialClauseValues(rawDataQueryPlan); if (queryPlan instanceof QueryIndexPlan) { ((QueryIndexPlan) queryPlan).setIndexType(indexType); @@ -360,6 +352,7 @@ public class QueryOperator extends Operator { measurements.addAll(measurementSetOfGivenSuffix); } + convertSpecialClauseValues(alignByDevicePlan); // slimit trim on the measurementColumnList if (specialClauseComponent.hasSlimit()) { int seriesSlimit = specialClauseComponent.getSeriesLimit(); @@ -385,6 +378,17 @@ public class QueryOperator extends Operator { return alignByDevicePlan; } + private void convertSpecialClauseValues(QueryPlan queryPlan) { + if (specialClauseComponent != null) { + queryPlan.setWithoutAllNull(specialClauseComponent.isWithoutAllNull()); + queryPlan.setWithoutAnyNull(specialClauseComponent.isWithoutAnyNull()); + queryPlan.setRowLimit(specialClauseComponent.getRowLimit()); + queryPlan.setRowOffset(specialClauseComponent.getRowOffset()); + queryPlan.setAscending(specialClauseComponent.isAscending()); + queryPlan.setAlignByTime(specialClauseComponent.isAlignByTime()); + } + } + private List<PartialPath> removeStarsInDeviceWithUnique(List<PartialPath> paths) throws LogicalOptimizeException { List<PartialPath> retDevices; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java index fb937ee..4b6fdfe 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java @@ -21,7 +21,6 @@ package org.apache.iotdb.db.qp.logical.crud; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.qp.physical.PhysicalPlan; -import org.apache.iotdb.db.qp.physical.crud.QueryPlan; import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.strategy.PhysicalGenerator; @@ -38,14 +37,11 @@ public class UDFQueryOperator extends QueryOperator { @Override public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator) throws QueryProcessException { - return this.generateRawDataQueryPlan(generator, new UDTFPlan(selectComponent.getZoneId())); + return super.generateRawDataQueryPlan(generator, initUDTFPlan()); } - @Override - protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan) - throws QueryProcessException { - queryPlan = super.generateRawDataQueryPlan(generator, queryPlan); - UDTFPlan udtfPlan = (UDTFPlan) queryPlan; + private UDTFPlan initUDTFPlan() { + UDTFPlan udtfPlan = new UDTFPlan(selectComponent.getZoneId()); udtfPlan.constructUdfExecutors(selectComponent.getResultColumns()); return udtfPlan; }
