drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-4465) Refactor Parsing and Planning to canonicalize planning and parsing
Date Thu, 03 Mar 2016 05:08:18 GMT

    [ https://issues.apache.org/jira/browse/DRILL-4465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15177181#comment-15177181
] 

ASF GitHub Bot commented on DRILL-4465:
---------------------------------------

Github user jinfengni commented on a diff in the pull request:

    https://github.com/apache/drill/pull/401#discussion_r54836613
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
---
    @@ -273,12 +282,90 @@ public RelNode visit(RelNode other) {
     
       }
     
    +  /**
    +   * Transform RelNode to a new RelNode without changing any traits. Also will log the
outcome.
    +   *
    +   * @param plannerType
    +   *          The type of Planner to use.
    +   * @param phase
    +   *          The transformation phase we're running.
    +   * @param input
    +   *          The origianl RelNode
    +   * @return The transformed relnode.
    +   */
    +  private RelNode transform(PlannerType plannerType, PlannerPhase phase, RelNode input)
{
    +    return transform(plannerType, phase, input, input.getTraitSet());
    +  }
    +
    +  /**
    +   * Transform RelNode to a new RelNode, targeting the provided set of traits. Also will
log the outcome.
    +   *
    +   * @param plannerType
    +   *          The type of Planner to use.
    +   * @param phase
    +   *          The transformation phase we're running.
    +   * @param input
    +   *          The origianl RelNode
    +   * @param targetTraits
    +   *          The traits we are targeting for output.
    +   * @return The transformed relnode.
    +   */
    +  protected RelNode transform(PlannerType plannerType, PlannerPhase phase, RelNode input,
RelTraitSet targetTraits) {
    +    final Stopwatch watch = Stopwatch.createStarted();
    +    final RuleSet rules = config.getRules(phase);
    +    final RelTraitSet toTraits = targetTraits.simplify();
    +
    +    final RelNode output;
    +    switch (plannerType) {
    +    case HEP_BOTTOM_UP:
    +    case HEP: {
    +      final HepProgramBuilder hepPgmBldr = new HepProgramBuilder();
    +      if (plannerType == PlannerType.HEP_BOTTOM_UP) {
    +        hepPgmBldr.addMatchOrder(HepMatchOrder.BOTTOM_UP);
    +      }
    +      for (RelOptRule rule : rules) {
    +        hepPgmBldr.addRuleInstance(rule);
    +      }
    +
    +      final HepPlanner planner = new HepPlanner(hepPgmBldr.build(), context.getPlannerSettings());
    +
    +      final List<RelMetadataProvider> list = Lists.newArrayList();
    +      list.add(DrillDefaultRelMetadataProvider.INSTANCE);
    +      planner.registerMetadataProviders(list);
    +      final RelMetadataProvider cachingMetaDataProvider = new CachingRelMetadataProvider(
    +          ChainedRelMetadataProvider.of(list), planner);
    +
    +      // Modify RelMetaProvider for every RelNode in the SQL operator Rel tree.
    +      input.accept(new MetaDataProviderModifier(cachingMetaDataProvider));
    +      planner.setRoot(input);
    +      if (!input.getTraitSet().equals(targetTraits)) {
    --- End diff --
    
    Why do we need Line 341 - 343 here? Originally, when we call HepPlanner, seems we do not
have to call planner.changeTrait(). 
    
    I comment out these 3 lines of code, and run couple of unit testcases. seems things work
fine. 



> Refactor Parsing and Planning to canonicalize planning and parsing
> ------------------------------------------------------------------
>
>                 Key: DRILL-4465
>                 URL: https://issues.apache.org/jira/browse/DRILL-4465
>             Project: Apache Drill
>          Issue Type: Sub-task
>          Components: Query Planning & Optimization
>            Reporter: Jacques Nadeau
>            Assignee: Jinfeng Ni
>             Fix For: 1.6.0
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message