Added parameter to change join hash size.
Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/6070c6cf Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/6070c6cf Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/6070c6cf Branch: refs/heads/master Commit: 6070c6cf57c8eb39b046b1fb4a56de4ee05676a5 Parents: 5ee0a43 Author: Preston Carman <[email protected]> Authored: Wed Aug 20 09:48:55 2014 -0700 Committer: Preston Carman <[email protected]> Committed: Wed Aug 20 23:23:12 2014 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/vxquery/cli/VXQuery.java | 16 ++++++++++------ .../vxquery/xmlquery/query/XMLQueryCompiler.java | 7 +++++-- 2 files changed, 15 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/6070c6cf/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 c513a72..8451bd5 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 @@ -125,10 +125,11 @@ public class VXQuery { timingMessage("Execution time: " + (end.getTime() - start.getTime()) + " ms"); if (opts.repeatExec > opts.timingIgnoreQueries) { long mean = sumTiming / (opts.repeatExec - opts.timingIgnoreQueries); - double sd = Math.sqrt(sumSquaredTiming / (opts.repeatExec - new Integer(opts.timingIgnoreQueries).doubleValue()) - mean * mean); + double sd = Math.sqrt(sumSquaredTiming + / (opts.repeatExec - new Integer(opts.timingIgnoreQueries).doubleValue()) - mean * mean); timingMessage("Average execution time: " + mean + " ms"); - timingMessage("Standard deviation: " + String.format( "%.4f", sd)); - timingMessage("Coefficient of variation: " + String.format( "%.4f", (sd / mean))); + timingMessage("Standard deviation: " + String.format("%.4f", sd)); + timingMessage("Coefficient of variation: " + String.format("%.4f", (sd / mean))); timingMessage("Minimum execution time: " + minTiming + " ms"); timingMessage("Maximum execution time: " + maxTiming + " ms"); } @@ -147,8 +148,8 @@ public class VXQuery { * @throws Exception */ private void execute() throws Exception { - System.setProperty("vxquery.buffer_size",Integer.toString(opts.bufferSize)); - + System.setProperty("vxquery.buffer_size", Integer.toString(opts.bufferSize)); + if (opts.clientNetIpAddress != null) { hcc = new HyracksConnection(opts.clientNetIpAddress, opts.clientNetPort); runQueries(); @@ -260,7 +261,7 @@ public class VXQuery { start = opts.timing ? new Date() : null; XMLQueryCompiler compiler = new XMLQueryCompiler(listener, getNodeList(), opts.frameSize, - opts.availableProcessors); + opts.availableProcessors, opts.joinHashSize); resultSetId = createResultSetId(); CompilerControlBlock ccb = new CompilerControlBlock(new StaticContextImpl(RootStaticContextImpl.INSTANCE), resultSetId, null); @@ -447,6 +448,9 @@ public class VXQuery { @Option(name = "-frame-size", usage = "Frame size in bytes. (default 65536)") private int frameSize = 65536; + @Option(name = "-join-hash-size", usage = "Join hash size in bytes.") + private int joinHashSize = -1; + @Option(name = "-buffer-size", usage = "Disk read buffer size in bytes.") private int bufferSize = -1; http://git-wip-us.apache.org/repos/asf/vxquery/blob/6070c6cf/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 2fdfbea..966bd87 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 @@ -90,11 +90,11 @@ public class XMLQueryCompiler { private String[] nodeList; public XMLQueryCompiler(XQueryCompilationListener listener, String[] nodeList, int frameSize) { - this(listener, nodeList, frameSize, -1); + this(listener, nodeList, frameSize, -1, -1); } public XMLQueryCompiler(XQueryCompilationListener listener, String[] nodeList, int frameSize, - int availableProcessors) { + int availableProcessors, int joinHashSize) { this.listener = listener == null ? NoopXQueryCompilationListener.INSTANCE : listener; this.frameSize = frameSize; this.nodeList = nodeList; @@ -112,6 +112,9 @@ public class XMLQueryCompiler { } }); builder.getPhysicalOptimizationConfig().setFrameSize(this.frameSize); + if (joinHashSize > 0) { + builder.getPhysicalOptimizationConfig().setInMemHashJoinTableSize(joinHashSize); + } builder.setLogicalRewrites(buildDefaultLogicalRewrites()); builder.setPhysicalRewrites(buildDefaultPhysicalRewrites()); builder.setSerializerDeserializerProvider(new ISerializerDeserializerProvider() {
