KYLIN-1122 fixed SQLDigest.isRawQuery derive logic
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/41bb1eea Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/41bb1eea Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/41bb1eea Branch: refs/heads/KYLIN-1122-B2 Commit: 41bb1eea69aed9def03f02d67806269da357c382 Parents: e7cd596 Author: wangxiaoyu <[email protected]> Authored: Sun Mar 20 19:20:08 2016 +0800 Committer: wangxiaoyu <[email protected]> Committed: Sun Mar 20 19:20:08 2016 +0800 ---------------------------------------------------------------------- .../java/org/apache/kylin/measure/raw/RawMeasureType.java | 4 ++-- .../java/org/apache/kylin/metadata/realization/SQLDigest.java | 7 ++++++- .../model_desc/test_kylin_inner_join_model_desc.json | 3 --- .../localmeta/model_desc/test_kylin_left_join_model_desc.json | 3 --- .../org/apache/kylin/query/enumerator/OLAPEnumerator.java | 1 - 5 files changed, 8 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/41bb1eea/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java b/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java index 4ba1f3e..93fbce3 100644 --- a/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java +++ b/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java @@ -161,7 +161,7 @@ public class RawMeasureType extends MeasureType<List<ByteArray>> { public CapabilityResult.CapabilityInfluence influenceCapabilityCheck(Collection<TblColRef> unmatchedDimensions, Collection<FunctionDesc> unmatchedAggregations, SQLDigest digest, MeasureDesc measureDesc) { //is raw query - if (digest.aggregations.size() != 0 || digest.metricColumns.size() != 0) + if (!digest.isRawQuery()) return null; TblColRef rawColumn = getRawColumn(measureDesc.getFunction()); @@ -192,7 +192,7 @@ public class RawMeasureType extends MeasureType<List<ByteArray>> { @Override public void adjustSqlDigest(MeasureDesc measureDesc, SQLDigest sqlDigest) { - if (sqlDigest.isRawQuery) { + if (sqlDigest.isRawQuery()) { TblColRef col = this.getRawColumn(measureDesc.getFunction()); ParameterDesc colParameter = new ParameterDesc(); colParameter.setType("column"); http://git-wip-us.apache.org/repos/asf/kylin/blob/41bb1eea/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 dbb1ce3..08bfc8c 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 @@ -45,7 +45,7 @@ public class SQLDigest { public Collection<FunctionDesc> aggregations; public Collection<MeasureDesc> sortMeasures; public Collection<OrderEnum> sortOrders; - public boolean isRawQuery = false; + private boolean isRawQuery = false; public SQLDigest(String factTable, TupleFilter filter, Collection<JoinDesc> joinDescs, Collection<TblColRef> allColumns, // Collection<TblColRef> groupbyColumns, Collection<TblColRef> filterColumns, Collection<TblColRef> aggregatedColumns, Collection<FunctionDesc> aggregateFunnc, Collection<MeasureDesc> sortMeasures, Collection<OrderEnum> sortOrders) { @@ -59,6 +59,11 @@ public class SQLDigest { this.aggregations = aggregateFunnc; this.sortMeasures = sortMeasures; this.sortOrders = sortOrders; + this.isRawQuery = this.groupbyColumns.isEmpty() && this.metricColumns.isEmpty(); + } + + public boolean isRawQuery() { + return isRawQuery; } @Override http://git-wip-us.apache.org/repos/asf/kylin/blob/41bb1eea/examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json ---------------------------------------------------------------------- diff --git a/examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json b/examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json index d96793d..7b8aded 100644 --- a/examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json +++ b/examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json @@ -88,9 +88,6 @@ } ], "metrics": [ - "CAL_DT", - "LSTG_FORMAT_NAME", - "LEAF_CATEG_ID", "PRICE", "ITEM_COUNT" ], http://git-wip-us.apache.org/repos/asf/kylin/blob/41bb1eea/examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json ---------------------------------------------------------------------- diff --git a/examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json b/examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json index b0dbc4f..165d0d5 100644 --- a/examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json +++ b/examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json @@ -99,9 +99,6 @@ } ], "metrics": [ - "CAL_DT", - "LSTG_FORMAT_NAME", - "LEAF_CATEG_ID", "PRICE", "ITEM_COUNT" ], http://git-wip-us.apache.org/repos/asf/kylin/blob/41bb1eea/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java b/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java index f5db6ae..aa8b2a7 100644 --- a/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java +++ b/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java @@ -177,7 +177,6 @@ public class OLAPEnumerator implements Enumerator<Object[]> { if (!sqlDigest.groupbyColumns.isEmpty() || !sqlDigest.metricColumns.isEmpty()) return; - sqlDigest.isRawQuery = true; // If no group by and metric found, then it's simple query like select ... from ... where ..., // But we have no raw data stored, in order to return better results, we hack to output sum of metric column logger.info("No group by and aggregation found in this query, will hack some result for better look of output...");
