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() {