You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2015/07/14 03:15:47 UTC

drill git commit: DRILL-3156: Fix Calcite trace by registering RelMetadataProvider with HepPlanner used for window function planning.

Repository: drill
Updated Branches:
  refs/heads/master 7edddd65e -> 09252c9aa


DRILL-3156: Fix Calcite trace by registering RelMetadataProvider with HepPlanner used for window function planning.


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/09252c9a
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/09252c9a
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/09252c9a

Branch: refs/heads/master
Commit: 09252c9aac95f2079db7582a57af4e88ce7aa114
Parents: 7edddd6
Author: Jinfeng Ni <jn...@apache.org>
Authored: Tue Jun 30 15:56:12 2015 -0700
Committer: Jinfeng Ni <jn...@apache.org>
Committed: Mon Jul 13 13:41:10 2015 -0700

----------------------------------------------------------------------
 .../exec/planner/sql/handlers/DefaultSqlHandler.java  | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/09252c9a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
index e96f63e..a53c242 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
@@ -39,6 +39,7 @@ import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rel.logical.LogicalValues;
 import org.apache.calcite.rel.metadata.CachingRelMetadataProvider;
 import org.apache.calcite.rel.metadata.ChainedRelMetadataProvider;
+import org.apache.calcite.rel.metadata.DefaultRelMetadataProvider;
 import org.apache.calcite.rel.metadata.RelMetadataProvider;
 import org.apache.calcite.rel.rules.JoinToMultiJoinRule;
 import org.apache.calcite.rel.rules.LoptOptimizeJoinRule;
@@ -446,10 +447,21 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
   }
 
   private RelNode convertToRel(SqlNode node) throws RelConversionException {
-    RelNode convertedNode = planner.convert(node);
+    final RelNode convertedNode = planner.convert(node);
+
+    final RelMetadataProvider provider = convertedNode.getCluster().getMetadataProvider();
+
+    // Register RelMetadataProvider with HepPlanner.
+    final List<RelMetadataProvider> list = Lists.newArrayList(provider);
+    hepPlanner.registerMetadataProviders(list);
+    final RelMetadataProvider cachingMetaDataProvider = new CachingRelMetadataProvider(ChainedRelMetadataProvider.of(list), hepPlanner);
+    convertedNode.accept(new MetaDataProviderModifier(cachingMetaDataProvider));
+
+    // HepPlanner is specifically used for Window Function planning only.
     hepPlanner.setRoot(convertedNode);
     RelNode rel = hepPlanner.findBestExp();
 
+    rel.accept(new MetaDataProviderModifier(provider));
     return rel;
   }