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