Addressing all the code review changes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/d88a64e1 Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/d88a64e1 Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/d88a64e1 Branch: refs/heads/prestonc/parser Commit: d88a64e17ff6aff2e5ee11597d5c5de8f30145ca Parents: 8a00d1b Author: Preston Carman <[email protected]> Authored: Mon Feb 17 13:34:53 2014 -0800 Committer: Preston Carman <[email protected]> Committed: Mon Feb 17 13:34:53 2014 -0800 ---------------------------------------------------------------------- .../java/org/apache/vxquery/cli/VXQuery.java | 6 +++--- ...tractRemoveRedundantTypeExpressionsRule.java | 8 ++++---- .../RemoveRedundantCastExpressionsRule.java | 2 +- .../RemoveRedundantDataExpressionsRule.java | 2 +- .../RemoveRedundantPromoteExpressionsRule.java | 2 +- .../RemoveRedundantTreatExpressionsRule.java | 3 +-- .../rewriter/rules/util/ExpressionToolbox.java | 5 +++-- ...GeneralComparisonScalarEvaluatorFactory.java | 18 ++++++++---------- .../misc/FnDataScalarEvaluatorFactory.java | 3 +-- .../org/apache/vxquery/xmlparser/XMLParser.java | 20 -------------------- 10 files changed, 23 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/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 06deac5..da6f40b 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 @@ -117,9 +117,9 @@ public class VXQuery { } VXQuery vxq = new VXQuery(opts); vxq.execute(); - Date end = new Date(); // if -timing argument passed, show the starting and ending times if (opts.timing) { + Date end = new Date(); message = "Execution time: " + (end.getTime() - start.getTime()) + "ms"; System.out.println(message); timing.add(message); @@ -254,9 +254,9 @@ public class VXQuery { CompilerControlBlock ccb = new CompilerControlBlock(new StaticContextImpl(RootStaticContextImpl.INSTANCE), resultSetId); compiler.compile(query, new StringReader(qStr), ccb, opts.optimizationLevel); - end = new Date(); // if -timing argument passed, show the starting and ending times if (opts.timing) { + end = new Date(); message = "Compile time: " + (end.getTime() - start.getTime()) + "ms"; System.out.println(message); timing.add(message); @@ -276,9 +276,9 @@ public class VXQuery { for (int i = 0; i < opts.repeatExec; ++i) { start = new Date(); runJob(js, writer); - end = new Date(); // if -timing argument passed, show the starting and ending times if (opts.timing) { + end = new Date(); if ((i + 1) > 3) { totalTiming += end.getTime() - start.getTime(); } http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractRemoveRedundantTypeExpressionsRule.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractRemoveRedundantTypeExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractRemoveRedundantTypeExpressionsRule.java index 752e107..5298f2a 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractRemoveRedundantTypeExpressionsRule.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractRemoveRedundantTypeExpressionsRule.java @@ -73,14 +73,14 @@ public abstract class AbstractRemoveRedundantTypeExpressionsRule implements IAlg // Find the input return type. inputSequenceType = ExpressionToolbox.getOutputSequenceType(opRef, argFirstM, dCtx); - // Find the treat type. + // Find the argument type. SequenceType sTypeArg = null; if (hasTypeArgument()) { - sTypeArg = ExpressionToolbox.getTypeExpressionTypeArguement(searchM, dCtx); + sTypeArg = ExpressionToolbox.getTypeExpressionTypeArgument(searchM, dCtx); } // remove - if (safeToReplace(sTypeArg, inputSequenceType)) { + if (matchesAllInstancesOf(sTypeArg, inputSequenceType)) { searchM.setValue(argFirstM.getValue()); modified = true; } @@ -88,7 +88,7 @@ public abstract class AbstractRemoveRedundantTypeExpressionsRule implements IAlg return modified; } - public abstract boolean safeToReplace(SequenceType sTypeArg, SequenceType sTypeOutput); + public abstract boolean matchesAllInstancesOf(SequenceType sTypeArg, SequenceType sTypeOutput); public boolean hasTypeArgument() { return true; http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantCastExpressionsRule.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantCastExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantCastExpressionsRule.java index bf06b00..339feea 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantCastExpressionsRule.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantCastExpressionsRule.java @@ -51,7 +51,7 @@ public class RemoveRedundantCastExpressionsRule extends AbstractRemoveRedundantT } @Override - public boolean safeToReplace(SequenceType sTypeArg, SequenceType sTypeOutput) { + public boolean matchesAllInstancesOf(SequenceType sTypeArg, SequenceType sTypeOutput) { if (sTypeArg != null && sTypeOutput != null && sTypeOutput.equals(sTypeArg)) { // Same type. return true; http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantDataExpressionsRule.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantDataExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantDataExpressionsRule.java index fb05e4d..97f98f5 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantDataExpressionsRule.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantDataExpressionsRule.java @@ -53,7 +53,7 @@ public class RemoveRedundantDataExpressionsRule extends AbstractRemoveRedundantT return false; } - public boolean safeToReplace(SequenceType sTypeArg, SequenceType sTypeOutput) { + public boolean matchesAllInstancesOf(SequenceType sTypeArg, SequenceType sTypeOutput) { if (sTypeOutput != null && sTypeOutput.getItemType().isAtomicType()) { return true; } http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantPromoteExpressionsRule.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantPromoteExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantPromoteExpressionsRule.java index 589618d..12865e0 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantPromoteExpressionsRule.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantPromoteExpressionsRule.java @@ -56,7 +56,7 @@ public class RemoveRedundantPromoteExpressionsRule extends AbstractRemoveRedunda } @Override - public boolean safeToReplace(SequenceType sTypeArg, SequenceType sTypeOutput) { + public boolean matchesAllInstancesOf(SequenceType sTypeArg, SequenceType sTypeOutput) { if (sTypeArg != null) { if (sTypeArg.getItemType() != BuiltinTypeRegistry.XS_DOUBLE && sTypeArg.getItemType() != BuiltinTypeRegistry.XS_FLOAT http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantTreatExpressionsRule.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantTreatExpressionsRule.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantTreatExpressionsRule.java index 63ad06f..ef23f30 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantTreatExpressionsRule.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/RemoveRedundantTreatExpressionsRule.java @@ -54,11 +54,10 @@ public class RemoveRedundantTreatExpressionsRule extends AbstractRemoveRedundant } @Override - public boolean safeToReplace(SequenceType sTypeArg, SequenceType sTypeOutput) { + public boolean matchesAllInstancesOf(SequenceType sTypeArg, SequenceType sTypeOutput) { if (sTypeArg != null) { stm.setSequenceType(sTypeArg); if (sTypeOutput != null && stm.isSubType(sTypeOutput)) { - // Same type. return true; } } http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/util/ExpressionToolbox.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/util/ExpressionToolbox.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/util/ExpressionToolbox.java index 7d54068..7794ed0 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/util/ExpressionToolbox.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/util/ExpressionToolbox.java @@ -171,7 +171,7 @@ public class ExpressionToolbox { return pTypeCode.getInteger(); } - public static SequenceType getTypeExpressionTypeArguement(Mutable<ILogicalExpression> searchM, + public static SequenceType getTypeExpressionTypeArgument(Mutable<ILogicalExpression> searchM, StaticContextImpl dCtx) { int typeId = getTypeExpressionTypeArgument(searchM); if (typeId > 0) { @@ -192,7 +192,7 @@ public class ExpressionToolbox { return null; } else if (function.getFunctionIdentifier().equals(BuiltinOperators.CAST.getFunctionIdentifier())) { // Special case since case has multiple type outputs. - return ExpressionToolbox.getTypeExpressionTypeArguement(argFirstM, dCtx); + return ExpressionToolbox.getTypeExpressionTypeArgument(argFirstM, dCtx); } else { return function.getSignature().getReturnType(); } @@ -212,6 +212,7 @@ public class ExpressionToolbox { if (variableOp.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) { return SequenceType.create(AnyNodeType.INSTANCE, Quantifier.QUANT_ONE); } + // TODO Consider support for other operators. i.e. Assign. } return null; } http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java index 1bcd1ce..a7b79e8 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java @@ -101,6 +101,12 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends final VoidPointable p2 = (VoidPointable) VoidPointable.FACTORY.createPointable(); final TaggedValuePointable tvpSeq1 = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable(); final TaggedValuePointable tvpSeq2 = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable(); + final TaggedValuePointable tvpTransform1 = (TaggedValuePointable) TaggedValuePointable.FACTORY + .createPointable(); + final TaggedValuePointable tvpTransform2 = (TaggedValuePointable) TaggedValuePointable.FACTORY + .createPointable(); + final TaggedValuePointable tvpCompare1 = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable(); + final TaggedValuePointable tvpCompare2 = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable(); return new AbstractTaggedValueArgumentScalarEvaluator(args) { AbstractCastToOperation aCastToOp = new CastToStringOperation(); @@ -188,20 +194,12 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends boolean tagTransformed1 = false, tagTransformed2 = false; abvsInner1.reset(); abvsInner2.reset(); - TaggedValuePointable tvpTransform1 = (TaggedValuePointable) TaggedValuePointable.FACTORY - .createPointable(); - TaggedValuePointable tvpTransform2 = (TaggedValuePointable) TaggedValuePointable.FACTORY - .createPointable(); tvpTransform1.set(tvpArg1); tvpTransform2.set(tvpArg2); int tid1 = FunctionHelper.getBaseTypeForGeneralComparisons(tvpTransform1.getTag()); int tid2 = FunctionHelper.getBaseTypeForGeneralComparisons(tvpTransform2.getTag()); // Converted tags - TaggedValuePointable tvpCompare1 = (TaggedValuePointable) TaggedValuePointable.FACTORY - .createPointable(); - TaggedValuePointable tvpCompare2 = (TaggedValuePointable) TaggedValuePointable.FACTORY - .createPointable(); try { // Converts node tree's into untyped atomic values that can then be compared as atomic items. if (tid1 == ValueTag.NODE_TREE_TAG && tid2 == ValueTag.NODE_TREE_TAG) { @@ -239,7 +237,7 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends } // Copy over the values not changed and upgrade numeric values to double. if (!tagTransformed1) { - tvpCompare1 = tvpTransform1; + tvpCompare1.set(tvpTransform1); if (FunctionHelper.isDerivedFromDouble(tvpCompare1.getTag())) { FunctionHelper.getDoublePointable(tvpTransform1, dOutInner1); tvpCompare1.set(abvsInner1.getByteArray(), abvsInner1.getStartOffset(), @@ -248,7 +246,7 @@ public abstract class AbstractGeneralComparisonScalarEvaluatorFactory extends } } if (!tagTransformed2) { - tvpCompare2 = tvpTransform2; + tvpCompare2.set(tvpTransform2); if (FunctionHelper.isDerivedFromDouble(tvpCompare2.getTag())) { FunctionHelper.getDoublePointable(tvpTransform2, dOutInner2); tvpCompare2.set(abvsInner2.getByteArray(), abvsInner2.getStartOffset(), http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/misc/FnDataScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/misc/FnDataScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/misc/FnDataScalarEvaluatorFactory.java index cd4dbb3..7aed0b4 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/misc/FnDataScalarEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/misc/FnDataScalarEvaluatorFactory.java @@ -27,7 +27,6 @@ import org.apache.vxquery.exceptions.SystemException; import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator; import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory; import org.apache.vxquery.runtime.functions.util.AtomizeHelper; -import org.apache.vxquery.runtime.functions.util.FunctionHelper; import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException; import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator; @@ -49,7 +48,7 @@ public class FnDataScalarEvaluatorFactory extends AbstractTaggedValueArgumentSca return new FnDataScalarEvaluator(args); } - private class FnDataScalarEvaluator extends AbstractTaggedValueArgumentScalarEvaluator { + private static class FnDataScalarEvaluator extends AbstractTaggedValueArgumentScalarEvaluator { final AtomizeHelper ah = new AtomizeHelper(); final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage(); final SequenceBuilder sb = new SequenceBuilder(); http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d88a64e1/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java index c2ada24..d73dd12 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java @@ -14,8 +14,6 @@ */ package org.apache.vxquery.xmlparser; -import org.apache.vxquery.exceptions.ErrorCode; -import org.apache.vxquery.exceptions.SystemException; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; @@ -46,22 +44,4 @@ public class XMLParser { throw new HyracksDataException(e.toString()); } } - - public void reset() throws SystemException { - } - - public static void parseInputSource(InputSource in, ArrayBackedValueStorage abvs, boolean attachTypes, - ITreeNodeIdProvider idProvider) throws SystemException { - XMLReader parser; - try { - parser = XMLReaderFactory.createXMLReader(); - SAXContentHandler handler = new SAXContentHandler(attachTypes, idProvider); - parser.setContentHandler(handler); - parser.setProperty("http://xml.org/sax/properties/lexical-handler", handler); - parser.parse(in); - handler.write(abvs); - } catch (Exception e) { - throw new SystemException(ErrorCode.FODC0002, e, in.getSystemId()); - } - } } \ No newline at end of file
