Updated to Hyracks 0.2.12-SNAPSHOT.
Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/ef6b20cb Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/ef6b20cb Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/ef6b20cb Branch: refs/heads/site Commit: ef6b20cb825b921851cf4ca2f1b53a3fe6b384d5 Parents: f0582d6 Author: Preston Carman <[email protected]> Authored: Wed Jun 4 19:04:18 2014 -0700 Committer: Preston Carman <[email protected]> Committed: Wed Jun 4 19:04:18 2014 -0700 ---------------------------------------------------------------------- pom.xml | 2 +- ...AbstractMaxMinAggregateEvaluatorFactory.java | 5 ++++ .../AvgGlobalAggregateEvaluatorFactory.java | 5 ++++ .../AvgLocalAggregateEvaluatorFactory.java | 5 ++++ .../FnAvgAggregateEvaluatorFactory.java | 5 ++++ .../FnCountAggregateEvaluatorFactory.java | 5 ++++ .../FnSumAggregateEvaluatorFactory.java | 5 ++++ .../SequenceAggregateEvaluatorFactory.java | 7 ++++- .../apache/vxquery/types/BuiltinAtomicType.java | 1 + .../query/VXQueryNullableTypeComputer.java | 29 ++++++++++++++++++++ .../xmlquery/query/XMLQueryCompiler.java | 3 +- .../translator/VXQueryPositionWriter.java | 19 +++++++++++++ .../xmlquery/translator/XMLQueryTranslator.java | 11 ++++---- 13 files changed, 93 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index b228cdf..752a633 100644 --- a/pom.xml +++ b/pom.xml @@ -594,7 +594,7 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <hyracks.version>0.2.11</hyracks.version> + <hyracks.version>0.2.12-SNAPSHOT</hyracks.version> </properties> <modules> http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java index b2f300f..4943c9b 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java @@ -62,6 +62,11 @@ public abstract class AbstractMaxMinAggregateEvaluatorFactory extends } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { if (count == 0) { XDMConstants.setEmptySequence(result); http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java index 61ae69e..f674997 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java @@ -78,6 +78,11 @@ public class AvgGlobalAggregateEvaluatorFactory extends AbstractTaggedValueArgum } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { tvpCount.getValue(longp); if (longp.getLong() == 0) { http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java index 6763a67..baebb29 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java @@ -71,6 +71,11 @@ public class AvgLocalAggregateEvaluatorFactory extends AbstractTaggedValueArgume } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { if (count == 0) { XDMConstants.setEmptySequence(result); http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java index ecde53b..c3fc544 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java @@ -64,6 +64,11 @@ public class FnAvgAggregateEvaluatorFactory extends AbstractTaggedValueArgumentA } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { if (count == 0) { XDMConstants.setEmptySequence(result); http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnCountAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnCountAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnCountAggregateEvaluatorFactory.java index f191dda..fbde38c 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnCountAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnCountAggregateEvaluatorFactory.java @@ -51,6 +51,11 @@ public class FnCountAggregateEvaluatorFactory extends AbstractTaggedValueArgumen } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { try { abvs.reset(); http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java index 8a55f3c..4049709 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java @@ -65,6 +65,11 @@ public class FnSumAggregateEvaluatorFactory extends AbstractTaggedValueArgumentA } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { result.set(tvpSum); } http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/SequenceAggregateEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/SequenceAggregateEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/SequenceAggregateEvaluatorFactory.java index 555b279..6cff90b 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/SequenceAggregateEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/SequenceAggregateEvaluatorFactory.java @@ -59,6 +59,11 @@ public class SequenceAggregateEvaluatorFactory extends AbstractTaggedValueArgume } @Override + public void finishPartial(IPointable result) throws AlgebricksException { + finish(result); + } + + @Override public void finish(IPointable result) throws AlgebricksException { if (slots.getSize() != 1) { try { @@ -70,7 +75,7 @@ public class SequenceAggregateEvaluatorFactory extends AbstractTaggedValueArgume } else { result.set(dataArea); } - } + } @Override protected void step(TaggedValuePointable[] args) throws SystemException { http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/types/BuiltinAtomicType.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/BuiltinAtomicType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/BuiltinAtomicType.java index 9ca75e7..bc5ee48 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/types/BuiltinAtomicType.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/types/BuiltinAtomicType.java @@ -17,6 +17,7 @@ package org.apache.vxquery.types; final class BuiltinAtomicType implements AtomicType { + private static final long serialVersionUID = 1L; private final int id; private final SchemaType baseType; private final DerivationProcess derivationProcess; http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryNullableTypeComputer.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryNullableTypeComputer.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryNullableTypeComputer.java new file mode 100644 index 0000000..20b26bb --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryNullableTypeComputer.java @@ -0,0 +1,29 @@ +/* + * Copyright 2009-2013 by The Regents of the University of California + * 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 from + * + * 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 org.apache.vxquery.xmlquery.query; + +import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException; +import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer; + +public class VXQueryNullableTypeComputer implements INullableTypeComputer { + + public static INullableTypeComputer INSTANCE = new VXQueryNullableTypeComputer(); + + @Override + public Object makeNullableType(Object type) throws AlgebricksException { + return type; + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/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..15443a9 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 @@ -41,7 +41,6 @@ import org.apache.vxquery.xmlquery.ast.ModuleNode; import org.apache.vxquery.xmlquery.translator.XMLQueryTranslator; import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException; -import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException; import edu.uci.ics.hyracks.algebricks.common.utils.Pair; import edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder; import edu.uci.ics.hyracks.algebricks.compiler.api.ICompiler; @@ -153,7 +152,7 @@ public class XMLQueryCompiler { builder.setNullableTypeComputer(new INullableTypeComputer() { @Override public Object makeNullableType(Object type) throws AlgebricksException { - throw new NotImplementedException("NullableTypeComputer is not implented"); + return new VXQueryNullableTypeComputer(); } }); builder.setNullWriterFactory(new VXQueryNullWriterFactory()); http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/VXQueryPositionWriter.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/VXQueryPositionWriter.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/VXQueryPositionWriter.java new file mode 100644 index 0000000..2e74a56 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/VXQueryPositionWriter.java @@ -0,0 +1,19 @@ +package org.apache.vxquery.xmlquery.translator; + +import java.io.DataOutput; +import java.io.IOException; +import java.io.Serializable; + +import org.apache.vxquery.datamodel.values.ValueTag; + +import edu.uci.ics.hyracks.algebricks.runtime.base.IUnnestingPositionWriter; + +public class VXQueryPositionWriter implements IUnnestingPositionWriter, Serializable { + private static final long serialVersionUID = 1L; + + public void write(DataOutput dataOutput, int position) throws IOException { + dataOutput.writeByte(ValueTag.XS_INTEGER_TAG); + dataOutput.writeLong(position); + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/ef6b20cb/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java index 3afb9a3..6b443b6 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java @@ -882,7 +882,7 @@ public class XMLQueryTranslator { if (qeNode.getQuant() == QuantifierType.EVERY) { satExpr = sfce(BuiltinFunctions.FN_NOT_1, satExpr); } - SelectOperator select = new SelectOperator(mutable(satExpr)); + SelectOperator select = new SelectOperator(mutable(satExpr), false, null); select.getInputs().add(mutable(tCtx.op)); tCtx.op = select; List<LogicalVariable> vars = new ArrayList<LogicalVariable>(); @@ -1021,7 +1021,8 @@ public class XMLQueryTranslator { LogicalVariable forLVar = newLogicalVariable(); LogicalVariable posLVar = fvdNode.getPosVar() != null ? newLogicalVariable() : null; UnnestOperator unnest = new UnnestOperator(forLVar, - mutable(ufce(BuiltinOperators.ITERATE, seq)), posLVar, null); + mutable(ufce(BuiltinOperators.ITERATE, seq)), posLVar, BuiltinTypeRegistry.XS_INTEGER, + new VXQueryPositionWriter()); SequenceType forVarType = SequenceType.create(AnyItemType.INSTANCE, Quantifier.QUANT_ONE); if (fvdNode.getType() != null) { forVarType = createSequenceType(fvdNode.getType()); @@ -1061,7 +1062,7 @@ public class XMLQueryTranslator { WhereClauseNode wcNode = (WhereClauseNode) cNode; ILogicalExpression condExpr = sfce(BuiltinFunctions.FN_BOOLEAN_1, vre(translateExpression(wcNode.getCondition(), tCtx))); - SelectOperator select = new SelectOperator(mutable(condExpr)); + SelectOperator select = new SelectOperator(mutable(condExpr), false, null); select.getInputs().add(mutable(tCtx.op)); tCtx.op = select; break; @@ -1496,7 +1497,7 @@ public class XMLQueryTranslator { ILogicalExpression boolTest = sfce(BuiltinFunctions.FN_BOOLEAN_1, vre(pLVar)); SelectOperator select = new SelectOperator(mutable(sfce(BuiltinOperators.IF_THEN_ELSE, tTest, - posTest, boolTest))); + posTest, boolTest)), false, null); select.getInputs().add(mutable(tCtx.op)); tCtx.op = select; ctxExpr = vre(tCtx.varScope.lookupVariable(XMLQueryCompilerConstants.DOT_VAR_NAME) @@ -1534,7 +1535,7 @@ public class XMLQueryTranslator { LogicalVariable forLVar = newLogicalVariable(); LogicalVariable posLVar = newLogicalVariable(); UnnestOperator unnest = new UnnestOperator(forLVar, mutable(ufce(BuiltinOperators.ITERATE, vre(seqLVar))), - posLVar, null); + posLVar, BuiltinTypeRegistry.XS_INTEGER, new VXQueryPositionWriter()); SequenceType forVarType = SequenceType.create(AnyItemType.INSTANCE, Quantifier.QUANT_ONE); XQueryVariable forVar = new XQueryVariable(XMLQueryCompilerConstants.DOT_VAR_NAME, forVarType, forLVar); tCtx.varScope.registerVariable(forVar);
