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 2015/06/17 06:01:15 UTC
incubator-kylin git commit: KYLIN-780 Add more debug during query
execution
Repository: incubator-kylin
Updated Branches:
refs/heads/0.7-staging 95180eaa4 -> 759e95675
KYLIN-780 Add more debug during query execution
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/759e9567
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/759e9567
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/759e9567
Branch: refs/heads/0.7-staging
Commit: 759e956756fc003e8b81bfc009cb99e2835a9203
Parents: 95180ea
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Jun 17 12:00:22 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Jun 17 12:00:56 2015 +0800
----------------------------------------------------------------------
.../org/apache/kylin/common/util/ClassUtil.java | 20 +++++++++++++++++++-
.../kylin/query/relnode/OLAPAggregateRel.java | 14 +++++++-------
.../kylin/query/relnode/OLAPProjectRel.java | 6 ++++--
.../relnode/OLAPToEnumerableConverter.java | 6 +++++-
4 files changed, 35 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/759e9567/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java b/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
index 4703e86..8fb9913 100644
--- a/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
+++ b/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
@@ -19,7 +19,9 @@
package org.apache.kylin.common.util;
import java.io.File;
+import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.net.URL;
import java.net.URLClassLoader;
@@ -41,7 +43,7 @@ public class ClassUtil {
method.invoke(urlClassLoader, new Object[] { file.toURI().toURL() });
}
}
-
+
@SuppressWarnings("unchecked")
public static <T> Class<? extends T> forName(String name, Class<T> clz) throws ClassNotFoundException {
if (name.startsWith("com.kylinolap")) {
@@ -57,4 +59,20 @@ public class ClassUtil {
throw new RuntimeException(e);
}
}
+
+ public static void updateFinalField(Class<?> clz, String fieldName, Object obj, Object newValue) {
+ try {
+ Field field = clz.getDeclaredField(fieldName);
+ field.setAccessible(true);
+
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+
+ field.set(obj, newValue);
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/759e9567/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 e228d82..940668d 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
@@ -33,6 +33,12 @@ import net.hydromatic.optiq.rules.java.EnumerableRel;
import net.hydromatic.optiq.rules.java.EnumerableRelImplementor;
import net.hydromatic.optiq.rules.java.JavaRules.EnumerableAggregateRel;
+import org.apache.kylin.common.util.ClassUtil;
+import org.apache.kylin.metadata.model.ColumnDesc;
+import org.apache.kylin.metadata.model.FunctionDesc;
+import org.apache.kylin.metadata.model.ParameterDesc;
+import org.apache.kylin.metadata.model.TableDesc;
+import org.apache.kylin.metadata.model.TblColRef;
import org.apache.kylin.query.sqlfunc.HLLDistinctCountAggFunc;
import org.eigenbase.rel.AggregateCall;
import org.eigenbase.rel.AggregateRelBase;
@@ -50,7 +56,6 @@ import org.eigenbase.reltype.RelDataTypeField;
import org.eigenbase.sql.SqlAggFunction;
import org.eigenbase.sql.SqlIdentifier;
import org.eigenbase.sql.fun.SqlStdOperatorTable;
-import org.eigenbase.sql.fun.SqlSumEmptyIsZeroAggFunction;
import org.eigenbase.sql.parser.SqlParserPos;
import org.eigenbase.sql.type.InferTypes;
import org.eigenbase.sql.type.OperandTypes;
@@ -61,12 +66,6 @@ import org.eigenbase.util.Util;
import com.google.common.base.Preconditions;
-import org.apache.kylin.metadata.model.ColumnDesc;
-import org.apache.kylin.metadata.model.TableDesc;
-import org.apache.kylin.metadata.model.FunctionDesc;
-import org.apache.kylin.metadata.model.ParameterDesc;
-import org.apache.kylin.metadata.model.TblColRef;
-
/**
* @author xjiang
*/
@@ -284,6 +283,7 @@ public class OLAPAggregateRel extends AggregateRelBase implements OLAPRel, Enume
}
this.rewriteAggCalls.add(aggCall);
}
+ ClassUtil.updateFinalField(AggregateRelBase.class, "aggCalls", this, this.rewriteAggCalls);
}
// rebuild rowType & columnRowType
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/759e9567/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 8de3101..9b9b07e 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
@@ -30,6 +30,9 @@ import net.hydromatic.optiq.rules.java.EnumerableRel;
import net.hydromatic.optiq.rules.java.EnumerableRelImplementor;
import net.hydromatic.optiq.rules.java.JavaRules.EnumerableCalcRel;
+import org.apache.kylin.common.util.ClassUtil;
+import org.apache.kylin.metadata.model.TblColRef;
+import org.apache.kylin.metadata.model.TblColRef.InnerDataTypeEnum;
import org.eigenbase.rel.ProjectRelBase;
import org.eigenbase.rel.RelCollation;
import org.eigenbase.rel.RelNode;
@@ -54,8 +57,6 @@ import org.eigenbase.sql.validate.SqlUserDefinedFunction;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import org.apache.kylin.metadata.model.TblColRef;
-import org.apache.kylin.metadata.model.TblColRef.InnerDataTypeEnum;
/**
*
@@ -268,6 +269,7 @@ public class OLAPProjectRel extends ProjectRelBase implements OLAPRel, Enumerabl
List<RexNode> newProjects = new ArrayList<RexNode>(this.rewriteProjects);
newProjects.addAll(newExpList);
this.rewriteProjects = newProjects;
+ ClassUtil.updateFinalField(ProjectRelBase.class, "exps", this, ImmutableList.copyOf(this.rewriteProjects));
// rebuild row type
FieldInfoBuilder fieldInfo = getCluster().getTypeFactory().builder();
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/759e9567/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java
index 85169c7..16a4ecb 100644
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java
@@ -34,7 +34,7 @@ import org.eigenbase.rel.RelNode;
import org.eigenbase.rel.convert.ConverterRelImpl;
import org.eigenbase.relopt.*;
import org.eigenbase.reltype.RelDataType;
-
+import org.eigenbase.sql.SqlExplainLevel;
import org.apache.kylin.metadata.realization.IRealization;
/**
@@ -82,6 +82,10 @@ public class OLAPToEnumerableConverter extends ConverterRelImpl implements Enume
OLAPRel.RewriteImplementor rewriteImplementor = new OLAPRel.RewriteImplementor();
rewriteImplementor.visitChild(this, getChild());
+ // String dumpPlan = RelOptUtil.dumpPlan("", this, false, SqlExplainLevel.DIGEST_ATTRIBUTES);
+ // System.out.println("============================================================================");
+ // System.out.println(dumpPlan);
+
// build java implementation
EnumerableRel child = (EnumerableRel) getChild();
OLAPRel.JavaImplementor javaImplementor = new OLAPRel.JavaImplementor(enumImplementor);