You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/05/01 12:46:52 UTC
[1/2] kylin git commit: KYLIN-2579 fix compile
Repository: kylin
Updated Branches:
refs/heads/master 7926ecd91 -> d7d468acb
KYLIN-2579 fix compile
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/8d647bd1
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/8d647bd1
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/8d647bd1
Branch: refs/heads/master
Commit: 8d647bd15d414d9e1cc5f8a8fd7198ce01fc97e3
Parents: 7926ecd
Author: Hongbin Ma <ma...@apache.org>
Authored: Mon May 1 17:45:48 2017 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Mon May 1 17:45:48 2017 +0800
----------------------------------------------------------------------
query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/8d647bd1/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
index addf8cf..60b5712 100644
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
@@ -41,7 +41,6 @@ import org.apache.calcite.plan.RelOptPlanner;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.plan.RelTrait;
import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.plan.volcano.RelSubset;
import org.apache.calcite.rel.InvalidRelException;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.CorrelationId;
[2/2] kylin git commit: KYLIN-2580 Improvement on subqueries: allow
grouping by columns from subquery
Posted by li...@apache.org.
KYLIN-2580 Improvement on subqueries: allow grouping by columns from subquery
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/d7d468ac
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/d7d468ac
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/d7d468ac
Branch: refs/heads/master
Commit: d7d468acb3982813304f87e8f3acc7952261aa9e
Parents: 8d647bd
Author: Hongbin Ma <ma...@apache.org>
Authored: Mon May 1 20:26:34 2017 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Mon May 1 20:26:34 2017 +0800
----------------------------------------------------------------------
.../query/sql_subquery/query20.sql.todo | 22 --------------------
.../resources/query/sql_subquery/query27.sql | 20 ++++++++++++++++++
.../resources/query/sql_subquery/query28.sql | 21 +++++++++++++++++++
.../query/sql_subquery/query29.sql.todo | 22 ++++++++++++++++++++
.../kylin/query/relnode/OLAPAggregateRel.java | 4 ++--
.../apache/kylin/query/relnode/OLAPContext.java | 10 +++++++++
.../kylin/query/relnode/OLAPFilterRel.java | 2 +-
.../kylin/query/relnode/OLAPProjectRel.java | 3 +--
8 files changed, 77 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/kylin-it/src/test/resources/query/sql_subquery/query20.sql.todo
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query20.sql.todo b/kylin-it/src/test/resources/query/sql_subquery/query20.sql.todo
deleted file mode 100644
index 810d0ca..0000000
--- a/kylin-it/src/test/resources/query/sql_subquery/query20.sql.todo
+++ /dev/null
@@ -1,22 +0,0 @@
-
--- group by or aggregate on columns from subquery will fail!
-
-
-select test_kylin_fact.lstg_format_name, xxx.week_beg_dt,sum(test_kylin_fact.price) as GMV
- , count(*) as TRANS_CNT
- from
-
- test_kylin_fact
-
- inner JOIN test_category_groupings
- ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id
-
-
- inner JOIN (select cal_dt,week_beg_dt from edw.test_cal_dt where week_beg_dt >= DATE '2010-02-10' ) xxx
- ON test_kylin_fact.cal_dt = xxx.cal_dt
-
-
- where test_category_groupings.meta_categ_name <> 'Baby'
- group by test_kylin_fact.lstg_format_name, xxx.week_beg_dt
-
-
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/kylin-it/src/test/resources/query/sql_subquery/query27.sql
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query27.sql b/kylin-it/src/test/resources/query/sql_subquery/query27.sql
new file mode 100644
index 0000000..78a959d
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query27.sql
@@ -0,0 +1,20 @@
+
+
+select test_kylin_fact.lstg_format_name, xxx.week_beg_dt , sum(test_kylin_fact.price) as GMV
+ , count(*) as TRANS_CNT
+ from
+
+ test_kylin_fact
+
+ inner JOIN test_category_groupings
+ ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+
+
+ inner JOIN (select cal_dt,week_beg_dt from edw.test_cal_dt where week_beg_dt >= DATE '2010-02-10' ) xxx
+ ON test_kylin_fact.cal_dt = xxx.cal_dt
+
+
+ where test_category_groupings.meta_categ_name <> 'Baby'
+ group by test_kylin_fact.lstg_format_name, xxx.week_beg_dt
+
+
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/kylin-it/src/test/resources/query/sql_subquery/query28.sql
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query28.sql b/kylin-it/src/test/resources/query/sql_subquery/query28.sql
new file mode 100644
index 0000000..ba31680
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query28.sql
@@ -0,0 +1,21 @@
+
+
+
+select test_kylin_fact.lstg_format_name, xxx.week_beg_dt,xxx.cal_dt, sum(test_kylin_fact.price) as GMV
+ , count(*) as TRANS_CNT
+ from
+
+ test_kylin_fact
+
+ inner JOIN test_category_groupings
+ ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+
+
+ inner JOIN (select cal_dt,week_beg_dt from edw.test_cal_dt where week_beg_dt >= DATE '2010-02-10' ) xxx
+ ON test_kylin_fact.cal_dt = xxx.cal_dt
+
+
+ where test_category_groupings.meta_categ_name <> 'Baby'
+ group by test_kylin_fact.lstg_format_name, xxx.week_beg_dt , xxx.cal_dt
+
+
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/kylin-it/src/test/resources/query/sql_subquery/query29.sql.todo
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query29.sql.todo b/kylin-it/src/test/resources/query/sql_subquery/query29.sql.todo
new file mode 100644
index 0000000..3cd04d3
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query29.sql.todo
@@ -0,0 +1,22 @@
+
+-- filter or aggregate on columns from subquery will fail!
+
+
+select test_kylin_fact.lstg_format_name, xxx.cal_dt, sum(test_kylin_fact.price) as GMV
+ , count(*) as TRANS_CNT
+ from
+
+ test_kylin_fact
+
+ inner JOIN test_category_groupings
+ ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+
+
+ inner JOIN (select cal_dt,week_beg_dt from edw.test_cal_dt where week_beg_dt >= DATE '2010-02-10' ) xxx
+ ON test_kylin_fact.cal_dt = xxx.cal_dt
+
+
+ where test_category_groupings.meta_categ_name <> 'Baby' and xxx.week_beg_dt > date'2010-02-02'
+ group by test_kylin_fact.lstg_format_name, xxx.cal_dt
+
+
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
index a4ff185..24711d3 100644
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
@@ -367,7 +367,7 @@ public class OLAPAggregateRel extends Aggregate implements OLAPRel {
if (!aggCall.getArgList().isEmpty()) {
for (Integer index : aggCall.getArgList()) {
TblColRef column = inputColumnRowType.getColumnByIndex(index);
- if (!column.isInnerColumn()) {
+ if (!column.isInnerColumn() && this.context.belongToContextTables(column)) {
this.context.metricsColumns.add(column);
}
}
@@ -377,7 +377,7 @@ public class OLAPAggregateRel extends Aggregate implements OLAPRel {
private void addToContextGroupBy(List<TblColRef> colRefs) {
for (TblColRef col : colRefs) {
- if (col.isInnerColumn() == false)
+ if (col.isInnerColumn() == false && this.context.belongToContextTables(col))
this.context.groupByColumns.add(col);
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/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 dde98a6..db5f2eb 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
@@ -162,6 +162,16 @@ public class OLAPContext {
this.sqlDigest = null;
}
+ public boolean belongToContextTables(TblColRef tblColRef) {
+ for (OLAPTableScan olapTableScan : this.allTableScans) {
+ if (olapTableScan.getColumnRowType().getAllColumns().contains(tblColRef)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public void setReturnTupleInfo(RelDataType rowType, ColumnRowType columnRowType) {
TupleInfo info = new TupleInfo();
List<RelDataTypeField> fieldList = rowType.getFieldList();
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
index 0ee9204..a88a86c 100755
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
@@ -322,7 +322,7 @@ public class OLAPFilterRel extends Filter implements OLAPRel {
Set<TblColRef> filterColumns = Sets.newHashSet();
TupleFilter.collectColumns(filter, filterColumns);
for (TblColRef tblColRef : filterColumns) {
- if (!tblColRef.isInnerColumn()) {
+ if (!tblColRef.isInnerColumn() && context.belongToContextTables(tblColRef)) {
context.allColumns.add(tblColRef);
context.filterColumns.add(tblColRef);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/d7d468ac/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
index 358136f..399a337 100644
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java
@@ -177,7 +177,7 @@ public class OLAPProjectRel extends Project implements OLAPRel {
// check it for rewrite count
if (index < inputColumnRowType.size()) {
TblColRef column = inputColumnRowType.getColumnByIndex(index);
- if (!column.isInnerColumn() && !this.rewriting && !this.afterAggregate) {
+ if (!column.isInnerColumn() && context.belongToContextTables(column) && !this.rewriting && !this.afterAggregate) {
if (!isMerelyPermutation) {
context.allColumns.add(column);
}
@@ -296,7 +296,6 @@ public class OLAPProjectRel extends Project implements OLAPRel {
public OLAPContext getContext() {
return context;
}
-
@Override
public boolean hasSubQuery() {