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 2016/12/07 23:24:38 UTC
kylin git commit: minor refactor
Repository: kylin
Updated Branches:
refs/heads/KYLIN-2254 9af1e264f -> 3e2d108e1
minor refactor
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/3e2d108e
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/3e2d108e
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/3e2d108e
Branch: refs/heads/KYLIN-2254
Commit: 3e2d108e1efb2e5faf8f3d405aae3498a33500c3
Parents: 9af1e26
Author: Yang Li <li...@apache.org>
Authored: Thu Dec 8 07:23:49 2016 +0800
Committer: Yang Li <li...@apache.org>
Committed: Thu Dec 8 07:23:49 2016 +0800
----------------------------------------------------------------------
.../kylin/metadata/model/FunctionDesc.java | 2 +-
.../kylin/query/relnode/OLAPAggregateRel.java | 13 ++++----
.../kylin/query/relnode/OLAPFilterRel.java | 35 +++++---------------
3 files changed, 15 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/3e2d108e/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
index 832cb4a..9252c42 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
@@ -140,7 +140,7 @@ public class FunctionDesc {
} else if (isCount()) {
return "COUNT__"; // ignores parameter, count(*), count(1), count(col) are all the same
} else {
- return getFullExpression().replaceAll("[(), ]", "_");
+ return getFullExpression().replaceAll("[(),. ]", "_");
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/3e2d108e/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 24933f5..f5fa74d 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
@@ -192,17 +192,16 @@ public class OLAPAggregateRel extends Aggregate implements OLAPRel {
for (int i = 0; i < this.aggregations.size(); i++) {
FunctionDesc aggFunc = this.aggregations.get(i);
- TblColRef aggCol = null;
+ String aggOutName;
if (aggFunc.needRewriteField()) {
- aggCol = buildRewriteColumn(aggFunc);
+ aggOutName = aggFunc.getRewriteFieldName();
} else {
AggregateCall aggCall = this.rewriteAggCalls.get(i);
- if (!aggCall.getArgList().isEmpty()) {
- int index = aggCall.getArgList().get(0);
- aggCol = inputColumnRowType.getColumnByIndex(index);
- }
+ int index = aggCall.getArgList().get(0);
+ aggOutName = aggFunc.getExpression() + "_" + inputColumnRowType.getColumnByIndex(index).getIdentity() + "_";
}
- columns.add(aggCol);
+ TblColRef aggOutCol = TblColRef.newInnerColumn(aggOutName, TblColRef.InnerDataTypeEnum.LITERAL);
+ columns.add(aggOutCol);
}
return new ColumnRowType(columns);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/3e2d108e/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 9573dfb..8023df4 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
@@ -20,6 +20,7 @@ package org.apache.kylin.query.relnode;
import java.util.GregorianCalendar;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -61,14 +62,13 @@ import org.apache.kylin.metadata.filter.DynamicTupleFilter;
import org.apache.kylin.metadata.filter.ExtractTupleFilter;
import org.apache.kylin.metadata.filter.LogicalTupleFilter;
import org.apache.kylin.metadata.filter.TupleFilter;
-import org.apache.kylin.metadata.filter.UnsupportedTupleFilter;
import org.apache.kylin.metadata.filter.TupleFilter.FilterOperatorEnum;
+import org.apache.kylin.metadata.filter.UnsupportedTupleFilter;
import org.apache.kylin.metadata.filter.function.Functions;
import org.apache.kylin.metadata.model.TblColRef;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
/**
*/
@@ -78,6 +78,7 @@ public class OLAPFilterRel extends Filter implements OLAPRel {
private final ColumnRowType inputRowType;
private final OLAPContext context;
+ private final Set<TblColRef> columnsInFilter = new HashSet<>();
public TupleFilterVisitor(ColumnRowType inputRowType, OLAPContext context) {
super(true);
@@ -151,11 +152,7 @@ public class OLAPFilterRel extends Filter implements OLAPRel {
if (filter == null) {
filter = cast(childFilter, call.type);
} else {
- try {
- filter.addChild(childFilter);
- } catch (Exception ex) {
- return new UnsupportedTupleFilter(FilterOperatorEnum.UNSUPPORTED);
- }
+ filter.addChild(childFilter);
}
}
@@ -231,8 +228,10 @@ public class OLAPFilterRel extends Filter implements OLAPRel {
@Override
public TupleFilter visitInputRef(RexInputRef inputRef) {
TblColRef column = inputRowType.getColumnByIndex(inputRef.getIndex());
- if (!column.isInnerColumn())
+ if (!column.isInnerColumn()) {
context.allColumns.add(column);
+ columnsInFilter.add(column);
+ }
ColumnTupleFilter filter = new ColumnTupleFilter(column);
return filter;
}
@@ -325,25 +324,7 @@ public class OLAPFilterRel extends Filter implements OLAPRel {
TupleFilterVisitor visitor = new TupleFilterVisitor(this.columnRowType, context);
context.filter = this.condition.accept(visitor);
- context.filterColumns = collectColumns(context.filter);
- }
-
- private Set<TblColRef> collectColumns(TupleFilter filter) {
- Set<TblColRef> ret = Sets.newHashSet();
- collectColumnsRecursively(filter, ret);
- return ret;
- }
-
- private void collectColumnsRecursively(TupleFilter filter, Set<TblColRef> collector) {
- if (filter == null)
- return;
-
- if (filter instanceof ColumnTupleFilter) {
- collector.add(((ColumnTupleFilter) filter).getColumn());
- }
- for (TupleFilter child : filter.getChildren()) {
- collectColumnsRecursively(child, collector);
- }
+ context.filterColumns = visitor.columnsInFilter;
}
@Override