You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2014/02/05 05:07:45 UTC

[4/6] git commit: pass a LogicalOperatorPrettyPrintVisitor to the OptimizationContext to pretty print during optimization clean up plan printing in the CLI

pass a LogicalOperatorPrettyPrintVisitor to the OptimizationContext to pretty print during optimization
clean up plan printing in the CLI


Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/64f6eb91
Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/64f6eb91
Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/64f6eb91

Branch: refs/heads/prestonc/benchmarks
Commit: 64f6eb91e847568fe1384781d88aabd740eb8b4e
Parents: 36fddcc
Author: Till Westmann <we...@gmail.com>
Authored: Mon Feb 3 15:37:33 2014 -0800
Committer: Till Westmann <we...@gmail.com>
Committed: Mon Feb 3 15:37:33 2014 -0800

----------------------------------------------------------------------
 .../java/org/apache/vxquery/cli/VXQuery.java    | 33 +++++++++-----------
 .../rewriter/VXQueryOptimizationContext.java    |  7 +++--
 .../xmlquery/query/XMLQueryCompiler.java        |  8 ++++-
 3 files changed, 26 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/64f6eb91/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
----------------------------------------------------------------------
diff --git a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
index 9c93f69..537b990 100644
--- a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
+++ b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
@@ -51,6 +51,7 @@ import com.thoughtworks.xstream.io.xml.DomDriver;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
 import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
+import edu.uci.ics.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
 import edu.uci.ics.hyracks.api.client.HyracksConnection;
 import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
 import edu.uci.ics.hyracks.api.client.NodeControllerInfo;
@@ -182,14 +183,7 @@ public class VXQuery {
                 @Override
                 public void notifyTranslationResult(Module module) {
                     if (opts.showTET) {
-                        try {
-                            LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor();
-                            StringBuilder buffer = new StringBuilder();
-                            PlanPrettyPrinter.printPlan(module.getBody(), buffer, v, 0);
-                            System.err.println(buffer.toString());
-                        } catch (AlgebricksException e) {
-                            e.printStackTrace();
-                        }
+                        System.err.println(appendPrettyPlan(new StringBuilder(), module).toString());
                     }
                 }
 
@@ -206,16 +200,7 @@ public class VXQuery {
                 @Override
                 public void notifyOptimizedResult(Module module) {
                     if (opts.showOET) {
-                        try {
-                            StaticContext ctx = module.getCompilerControlBlock().getStaticContext();
-                        	VXQueryLogicalExpressionPrettyPrintVisitor ev = new VXQueryLogicalExpressionPrettyPrintVisitor(ctx);
-                            LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor(ev);
-                            StringBuilder buffer = new StringBuilder();
-                            PlanPrettyPrinter.printPlan(module.getBody(), buffer, v, 0);
-                            System.err.println(buffer.toString());
-                        } catch (AlgebricksException e) {
-                            e.printStackTrace();
-                        }
+                        System.err.println(appendPrettyPlan(new StringBuilder(), module).toString());
                     }
                 }
 
@@ -231,6 +216,18 @@ public class VXQuery {
                         System.err.println(new XStream(new DomDriver()).toXML(moduleNode));
                     }
                 }
+                
+                private StringBuilder appendPrettyPlan(StringBuilder sb, Module module) {
+                    try {
+                        StaticContext ctx = module.getCompilerControlBlock().getStaticContext();
+                        ILogicalExpressionVisitor<String, Integer> ev = new VXQueryLogicalExpressionPrettyPrintVisitor(ctx);
+                        LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor(ev);
+                        PlanPrettyPrinter.printPlan(module.getBody(), sb, v, 0);
+                    } catch (AlgebricksException e) {
+                        e.printStackTrace();
+                    }
+                    return sb;
+                }
             };
 
             XMLQueryCompiler compiler = new XMLQueryCompiler(listener, getNodeList(), opts.frameSize);

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/64f6eb91/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/VXQueryOptimizationContext.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/VXQueryOptimizationContext.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/VXQueryOptimizationContext.java
index b985a6a..a763649 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/VXQueryOptimizationContext.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/VXQueryOptimizationContext.java
@@ -27,6 +27,7 @@ import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionEvalSi
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IMergeAggregationExpressionFactory;
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer;
+import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.AlgebricksOptimizationContext;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
 
@@ -40,10 +41,10 @@ public class VXQueryOptimizationContext extends AlgebricksOptimizationContext {
 
     public VXQueryOptimizationContext(int varCounter, IExpressionEvalSizeComputer expressionEvalSizeComputer,
             IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
-            IExpressionTypeComputer expressionTypeComputer,
-            INullableTypeComputer nullableTypeComputer, PhysicalOptimizationConfig physicalOptimizationConfig) {
+            IExpressionTypeComputer expressionTypeComputer, INullableTypeComputer nullableTypeComputer,
+            PhysicalOptimizationConfig physicalOptimizationConfig, LogicalOperatorPrettyPrintVisitor prettyPrintVisitor) {
         super(varCounter, expressionEvalSizeComputer, mergeAggregationExpressionFactory, expressionTypeComputer,
-                nullableTypeComputer, physicalOptimizationConfig);
+                nullableTypeComputer, physicalOptimizationConfig, prettyPrintVisitor);
     }
 
     public VXQueryCollectionDataSource getCollectionDataSourceMap(String collectionName) {

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/64f6eb91/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
index 79637d6..8b10efc 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
@@ -26,6 +26,7 @@ import org.apache.vxquery.compiler.algebricks.VXQueryConstantValue;
 import org.apache.vxquery.compiler.algebricks.VXQueryExpressionRuntimeProvider;
 import org.apache.vxquery.compiler.algebricks.VXQueryNullWriterFactory;
 import org.apache.vxquery.compiler.algebricks.VXQueryPrinterFactoryProvider;
+import org.apache.vxquery.compiler.algebricks.prettyprint.VXQueryLogicalExpressionPrettyPrintVisitor;
 import org.apache.vxquery.compiler.rewriter.RewriteRuleset;
 import org.apache.vxquery.compiler.rewriter.VXQueryOptimizationContext;
 import org.apache.vxquery.exceptions.ErrorCode;
@@ -58,6 +59,7 @@ import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IMergeAggregation
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer;
 import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IOptimizationContextFactory;
@@ -75,6 +77,8 @@ public class XMLQueryCompiler {
     private final ICompilerFactory cFactory;
 
     private final VXQueryMetadataProvider mdProvider;
+    
+    private LogicalOperatorPrettyPrintVisitor pprinter;
 
     private ModuleNode moduleNode;
 
@@ -97,7 +101,7 @@ public class XMLQueryCompiler {
                             PhysicalOptimizationConfig physicalOptimizationConfig) {
                         return new VXQueryOptimizationContext(varCounter, expressionEvalSizeComputer,
                                 mergeAggregationExpressionFactory, expressionTypeComputer, nullableTypeComputer,
-                                physicalOptimizationConfig);
+                                physicalOptimizationConfig, pprinter);
                     }
                 });
         builder.getPhysicalOptimizationConfig().setFrameSize(this.frameSize);
@@ -150,6 +154,8 @@ public class XMLQueryCompiler {
         moduleNode = XMLQueryParser.parse(name, query);
         listener.notifyParseResult(moduleNode);
         module = new XMLQueryTranslator(ccb).translateModule(moduleNode);
+        pprinter = new LogicalOperatorPrettyPrintVisitor(new VXQueryLogicalExpressionPrettyPrintVisitor(module
+                .getCompilerControlBlock().getStaticContext()));
         compiler = cFactory.createCompiler(module.getBody(), mdProvider, 0);
         listener.notifyTranslationResult(module);
         XMLQueryTypeChecker.typeCheckModule(module);