Repository: kylin Updated Branches: refs/heads/master 9cc953273 -> b9fdab7f8
KYLIN-2113 pass sort by columns in SQLDigest Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/b9fdab7f Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b9fdab7f Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b9fdab7f Branch: refs/heads/master Commit: b9fdab7f85831499f77ae2787ee9aa8a49eb2e46 Parents: 9cc9532 Author: Li Yang <liy...@apache.org> Authored: Thu Oct 20 17:23:27 2016 +0800 Committer: Li Yang <liy...@apache.org> Committed: Thu Oct 20 17:23:27 2016 +0800 ---------------------------------------------------------------------- .../apache/kylin/metadata/realization/SQLDigest.java | 7 +++---- .../org/apache/kylin/query/relnode/OLAPContext.java | 13 ++++++------- .../org/apache/kylin/query/relnode/OLAPSortRel.java | 6 ++---- 3 files changed, 11 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/b9fdab7f/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java index 4887abb..90fa53a 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java @@ -24,7 +24,6 @@ import java.util.Set; import org.apache.kylin.metadata.filter.TupleFilter; import org.apache.kylin.metadata.model.FunctionDesc; import org.apache.kylin.metadata.model.JoinDesc; -import org.apache.kylin.metadata.model.MeasureDesc; import org.apache.kylin.metadata.model.TblColRef; import com.google.common.collect.ImmutableList; @@ -56,13 +55,13 @@ public class SQLDigest { public Set<TblColRef> metricColumns; public List<FunctionDesc> aggregations; // storage level measure type, on top of which various sql aggr function may apply public List<SQLCall> aggrSqlCalls; // sql level aggregation function call - public List<MeasureDesc> sortMeasures; + public List<TblColRef> sortColumns; public List<OrderEnum> sortOrders; public boolean isRawQuery; public SQLDigest(String factTable, TupleFilter filter, List<JoinDesc> joinDescs, Set<TblColRef> allColumns, // List<TblColRef> groupbyColumns, Set<TblColRef> filterColumns, Set<TblColRef> metricColumns, // - List<FunctionDesc> aggregations, List<SQLCall> aggrSqlCalls, List<MeasureDesc> sortMeasures, List<OrderEnum> sortOrders) { + List<FunctionDesc> aggregations, List<SQLCall> aggrSqlCalls, List<TblColRef> sortColumns, List<OrderEnum> sortOrders) { this.factTable = factTable; this.filter = filter; this.joinDescs = joinDescs; @@ -72,7 +71,7 @@ public class SQLDigest { this.metricColumns = metricColumns; this.aggregations = aggregations; this.aggrSqlCalls = aggrSqlCalls; - this.sortMeasures = sortMeasures; + this.sortColumns = sortColumns; this.sortOrders = sortOrders; this.isRawQuery = isRawQuery(); } http://git-wip-us.apache.org/repos/asf/kylin/blob/b9fdab7f/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java index cdec665..b368b5d 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java @@ -33,7 +33,6 @@ import org.apache.kylin.cube.CubeInstance; import org.apache.kylin.metadata.filter.TupleFilter; import org.apache.kylin.metadata.model.FunctionDesc; import org.apache.kylin.metadata.model.JoinDesc; -import org.apache.kylin.metadata.model.MeasureDesc; import org.apache.kylin.metadata.model.TblColRef; import org.apache.kylin.metadata.realization.IRealization; import org.apache.kylin.metadata.realization.SQLDigest; @@ -89,7 +88,7 @@ public class OLAPContext { public OLAPContext(int seq) { this.id = seq; this.storageContext = new StorageContext(); - this.sortMeasures = Lists.newArrayList(); + this.sortColumns = Lists.newArrayList(); this.sortOrders = Lists.newArrayList(); Map<String, String> parameters = _localPrarameters.get(); if (parameters != null) { @@ -126,7 +125,7 @@ public class OLAPContext { public Set<TblColRef> filterColumns = new HashSet<TblColRef>(); public TupleFilter filter; public List<JoinDesc> joins = new LinkedList<JoinDesc>(); - private List<MeasureDesc> sortMeasures; + private List<TblColRef> sortColumns; private List<SQLDigest.OrderEnum> sortOrders; // rewrite info @@ -147,7 +146,7 @@ public class OLAPContext { public SQLDigest getSQLDigest() { if (sqlDigest == null) - sqlDigest = new SQLDigest(firstTableScan.getTableName(), filter, joins, allColumns, groupByColumns, filterColumns, metricsColumns, aggregations, aggrSqlCalls, sortMeasures, sortOrders); + sqlDigest = new SQLDigest(firstTableScan.getTableName(), filter, joins, allColumns, groupByColumns, filterColumns, metricsColumns, aggregations, aggrSqlCalls, sortColumns, sortOrders); return sqlDigest; } @@ -170,9 +169,9 @@ public class OLAPContext { this.returnTupleInfo = info; } - public void addSort(MeasureDesc measure, SQLDigest.OrderEnum order) { - if (measure != null) { - sortMeasures.add(measure); + public void addSort(TblColRef col, SQLDigest.OrderEnum order) { + if (col != null) { + sortColumns.add(col); sortOrders.add(order); } } http://git-wip-us.apache.org/repos/asf/kylin/blob/b9fdab7f/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java index ef4ffe8..70fc3e3 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java @@ -91,10 +91,7 @@ public class OLAPSortRel extends Sort implements OLAPRel { SQLDigest.OrderEnum order = getOrderEnum(fieldCollation.getDirection()); OLAPRel olapChild = (OLAPRel) this.getInput(); TblColRef orderCol = olapChild.getColumnRowType().getAllColumns().get(index); - MeasureDesc measure = findMeasure(orderCol); - if (measure != null) { - this.context.addSort(measure, order); - } + this.context.addSort(orderCol, order); this.context.storageContext.markSort(); } @@ -110,6 +107,7 @@ public class OLAPSortRel extends Sort implements OLAPRel { } } + @SuppressWarnings("unused") private MeasureDesc findMeasure(TblColRef col) { for (MeasureDesc measure : this.context.realization.getMeasures()) { if (col.getName().equals(measure.getFunction().getRewriteFieldName())) {