Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.facebook.presto.sql.analyzer;
 
 
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class QueryExplainer
 {
     private final Session session;
     private final List<PlanOptimizerplanOptimizers;
     private final Metadata metadata;
     private final SqlParser sqlParser;
     private final boolean experimentalSyntaxEnabled;
 
     public QueryExplainer(
             Session session,
             List<PlanOptimizerplanOptimizers,
             Metadata metadata,
             SqlParser sqlParser,
             boolean experimentalSyntaxEnabled)
     {
         this. = checkNotNull(session"session is null");
         this. = checkNotNull(planOptimizers"planOptimizers is null");
         this. = checkNotNull(metadata"metadata is null");
         this. = checkNotNull(sqlParser"sqlParser is null");
         this. = experimentalSyntaxEnabled;
     }
 
     public String getPlan(Statement statementExplainType.Type planType)
     {
         switch (planType) {
             case :
                 Plan plan = getLogicalPlan(statement);
                 return PlanPrinter.textLogicalPlan(plan.getRoot(), plan.getTypes(), );
             case :
                 SubPlan subPlan = getDistributedPlan(statement);
                 return PlanPrinter.textDistributedPlan(subPlan);
         }
         throw new IllegalArgumentException("Unhandled plan type: " + planType);
     }
 
     public String getGraphvizPlan(Statement statementExplainType.Type planType)
     {
         switch (planType) {
             case :
                 Plan plan = getLogicalPlan(statement);
                 return PlanPrinter.graphvizLogicalPlan(plan.getRoot(), plan.getTypes());
             case :
                 SubPlan subPlan = getDistributedPlan(statement);
                 return PlanPrinter.graphvizDistributedPlan(subPlan);
         }
         throw new IllegalArgumentException("Unhandled plan type: " + planType);
     }
 
     public String getJsonPlan(Statement statement)
     {
         Plan plan = getLogicalPlan(statement);
         return PlanPrinter.getJsonPlanSource(plan.getRoot(), );
     }
 
     private Plan getLogicalPlan(Statement statement)
     {
         // analyze statement
         Analyzer analyzer = new Analyzer(, Optional.of(this), );
 
         Analysis analysis = analyzer.analyze(statement);
         PlanNodeIdAllocator idAllocator = new PlanNodeIdAllocator();
 
         // plan statement
         LogicalPlanner logicalPlanner = new LogicalPlanner(idAllocator);
         return logicalPlanner.plan(analysis);
     }
    private SubPlan getDistributedPlan(Statement statement)
    {
        // analyze statement
        Analyzer analyzer = new Analyzer(, Optional.of(this), );
        Analysis analysis = analyzer.analyze(statement);
        PlanNodeIdAllocator idAllocator = new PlanNodeIdAllocator();
        // plan statement
        LogicalPlanner logicalPlanner = new LogicalPlanner(idAllocator);
        Plan plan = logicalPlanner.plan(analysis);
        return new PlanFragmenter().createSubPlans(plan);
    }
New to GrepCode? Check out our FAQ X