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);