You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by vi...@apache.org on 2012/08/21 04:05:31 UTC
svn commit: r1375368 - in
/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery:
compiler/algebricks/ compiler/rewriter/ context/ datamodel/accessors/nodes/
datamodel/values/ functions/ runtime/functions/bool/ runtime/functions...
Author: vinayakb
Date: Tue Aug 21 02:05:30 2012
New Revision: 1375368
URL: http://svn.apache.org/viewvc?rev=1375368&view=rev
Log:
Added support for child and attribute axes
Added:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryNullWriterFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/XDMConstants.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/nodeid/
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/nodeid/SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AbstractPathStepScalarEvaluator.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluator.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluator.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluatorFactory.java
Modified:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/NodeTreePointable.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/SequenceType.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/XQType.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryNullWriterFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryNullWriterFactory.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryNullWriterFactory.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryNullWriterFactory.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,31 @@
+package org.apache.vxquery.compiler.algebricks;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.values.XDMConstants;
+
+import edu.uci.ics.hyracks.api.dataflow.value.INullWriter;
+import edu.uci.ics.hyracks.api.dataflow.value.INullWriterFactory;
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.data.std.primitive.VoidPointable;
+
+public class VXQueryNullWriterFactory implements INullWriterFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public INullWriter createNullWriter() {
+ final VoidPointable vp = (VoidPointable) VoidPointable.FACTORY.createPointable();
+ return new INullWriter() {
+ @Override
+ public void writeNull(DataOutput out) throws HyracksDataException {
+ XDMConstants.setEmptySequence(vp);
+ try {
+ out.write(vp.getByteArray(), vp.getStartOffset(), vp.getLength());
+ } catch (IOException e) {
+ throw new HyracksDataException(e);
+ }
+ }
+ };
+ }
+}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/RewriteRuleset.java Tue Aug 21 02:05:30 2012
@@ -15,8 +15,10 @@ import edu.uci.ics.hyracks.algebricks.re
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractGbyExpressionsRule;
import edu.uci.ics.hyracks.algebricks.rewriter.rules.FactorRedundantGroupAndDecorVarsRule;
import edu.uci.ics.hyracks.algebricks.rewriter.rules.InferTypesRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineAssignIntoAggregateRule;
import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByForStandaloneAggregRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceAggregateCombinerRule;
+import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByCombinerRule;
import edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule;
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PullSelectOutOfEqJoin;
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushLimitDownRule;
@@ -39,7 +41,6 @@ public class RewriteRuleset {
public final static List<IAlgebraicRewriteRule> buildNormalizationRuleCollection() {
List<IAlgebraicRewriteRule> normalization = new LinkedList<IAlgebraicRewriteRule>();
normalization.add(new EliminateSubplanRule());
- normalization.add(new IntroduceGroupByForStandaloneAggregRule());
normalization.add(new BreakSelectIntoConjunctsRule());
normalization.add(new PushSelectIntoJoinRule());
normalization.add(new ExtractGbyExpressionsRule());
@@ -79,6 +80,9 @@ public class RewriteRuleset {
List<IAlgebraicRewriteRule> consolidation = new LinkedList<IAlgebraicRewriteRule>();
consolidation.add(new ConsolidateSelectsRule());
consolidation.add(new ConsolidateAssignsRule());
+ consolidation.add(new InlineAssignIntoAggregateRule());
+ consolidation.add(new IntroduceGroupByCombinerRule());
+ consolidation.add(new IntroduceAggregateCombinerRule());
consolidation.add(new RemoveUnusedAssignAndAggregateRule());
return consolidation;
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java Tue Aug 21 02:05:30 2012
@@ -385,6 +385,10 @@ public class StaticContextImpl implement
return -1;
}
+ List<SequenceType> getSequenceTypeList() {
+ return sequenceTypeList;
+ }
+
@Override
public int getMaxSequenceTypeCode() {
return typeCounter;
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImplFactory.java Tue Aug 21 02:05:30 2012
@@ -1,21 +1,34 @@
package org.apache.vxquery.context;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vxquery.types.SequenceType;
+
class StaticContextImplFactory implements IStaticContextFactory {
private static final long serialVersionUID = 1L;
private final IStaticContextFactory parentSCFactory;
- private StaticContextImplFactory(IStaticContextFactory parentSCFactory) {
+ private final List<SequenceType> seqTypes;
+
+ private StaticContextImplFactory(IStaticContextFactory parentSCFactory, List<SequenceType> seqTypes) {
this.parentSCFactory = parentSCFactory;
+ this.seqTypes = seqTypes;
}
@Override
public StaticContext createStaticContext() {
- return new StaticContextImpl(parentSCFactory.createStaticContext());
+ StaticContextImpl sctx = new StaticContextImpl(parentSCFactory.createStaticContext());
+ for (SequenceType sType : seqTypes) {
+ sctx.encodeSequenceType(sType);
+ }
+ return sctx;
}
static IStaticContextFactory createInstance(StaticContextImpl staticContextImpl) {
IStaticContextFactory parentSCFactory = staticContextImpl.getParent().createFactory();
- return new StaticContextImplFactory(parentSCFactory);
+ return new StaticContextImplFactory(parentSCFactory, new ArrayList<SequenceType>(
+ staticContextImpl.getSequenceTypeList()));
}
}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/NodeTreePointable.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/NodeTreePointable.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/NodeTreePointable.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/NodeTreePointable.java Tue Aug 21 02:05:30 2012
@@ -90,7 +90,7 @@ public class NodeTreePointable extends A
return dictionaryExists() ? IntegerPointable.getInteger(bytes, getDictionaryEntryCountOffset()) : 0;
}
- public void getString(int idx, UTF8StringPointable string) {
+ public void getString(int idx, IPointable string) {
int nEntries = getDictionaryEntryCount();
if (idx < 0 || idx >= nEntries) {
throw new IllegalArgumentException(idx + " not within [0, " + nEntries + ")");
@@ -136,11 +136,11 @@ public class NodeTreePointable extends A
return nodeIdExists() ? NODE_ID_SIZE : 0;
}
- private int getDictionaryOffset() {
+ public int getDictionaryOffset() {
return getNodeIdOffset() + getNodeIdSize();
}
- private int getDictionarySize() {
+ public int getDictionarySize() {
return dictionaryExists() ? IntegerPointable.getInteger(bytes, getDictionaryOffset()) : 0;
}
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/XDMConstants.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/XDMConstants.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/XDMConstants.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/values/XDMConstants.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,57 @@
+package org.apache.vxquery.datamodel.values;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder;
+
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public class XDMConstants {
+ private static final byte[] BOOLEAN_TRUE_CONSTANT;
+
+ private static final byte[] BOOLEAN_FALSE_CONSTANT;
+
+ private static final byte[] EMPTY_SEQUENCE;
+
+ static {
+ BOOLEAN_TRUE_CONSTANT = new byte[2];
+ BOOLEAN_TRUE_CONSTANT[0] = ValueTag.XS_BOOLEAN_TAG;
+ BooleanPointable.setBoolean(BOOLEAN_TRUE_CONSTANT, 1, true);
+
+ BOOLEAN_FALSE_CONSTANT = new byte[2];
+ BOOLEAN_FALSE_CONSTANT[0] = ValueTag.XS_BOOLEAN_TAG;
+ BooleanPointable.setBoolean(BOOLEAN_FALSE_CONSTANT, 1, false);
+
+ ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
+ SequenceBuilder sb = new SequenceBuilder();
+ sb.reset(abvs);
+ try {
+ sb.finish();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ EMPTY_SEQUENCE = Arrays.copyOf(abvs.getByteArray(), abvs.getLength());
+ }
+
+ public static void setTrue(IPointable p) {
+ set(p, BOOLEAN_TRUE_CONSTANT);
+ }
+
+ public static void setFalse(IPointable p) {
+ set(p, BOOLEAN_FALSE_CONSTANT);
+ }
+
+ public static void setEmptySequence(IPointable p) {
+ set(p, EMPTY_SEQUENCE);
+ }
+
+ private static void set(IPointable p, byte[] array) {
+ p.set(array, 0, array.length);
+ }
+
+ private XDMConstants() {
+ }
+}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml Tue Aug 21 02:05:30 2012
@@ -678,6 +678,7 @@
<operator name="opext:sort-distinct-nodes-asc-or-atomics">
<param name="arg" type="item()*"/>
<return type="item()*"/>
+ <runtime type="scalar" class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory"/>
</operator>
<!-- opext:sort-nodes-desc($arg as node()*) as node()* -->
@@ -772,12 +773,14 @@
<operator name="opext:attribute">
<param name="arg" type="node()*"/>
<return type="node()*"/>
+ <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.AttributePathStepScalarEvaluatorFactory"/>
</operator>
<!-- opext:child($arg as node()*) as node()* -->
<operator name="opext:child">
<param name="arg" type="node()*"/>
<return type="node()*"/>
+ <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.ChildPathStepScalarEvaluatorFactory"/>
</operator>
<!-- opext:descendant($arg as node()*) as node()* -->
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -1,6 +1,7 @@
package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
@@ -30,11 +31,11 @@ public class AndScalarEvaluatorFactory e
for (TaggedValuePointable arg : args) {
arg.getValue(bp);
if (!bp.getBoolean()) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
return;
}
}
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
}
};
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -3,6 +3,7 @@ package org.apache.vxquery.runtime.funct
import org.apache.vxquery.datamodel.accessors.SequencePointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.ErrorCode;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
@@ -39,10 +40,10 @@ public class FnBooleanScalarEvaluatorFac
case ValueTag.SEQUENCE_TAG: {
tvp.getValue(seqp);
if (seqp.getEntryCount() == 0) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
return;
}
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
return;
}
@@ -55,30 +56,30 @@ public class FnBooleanScalarEvaluatorFac
case ValueTag.XS_INTEGER_TAG: {
tvp.getValue(lp);
if (lp.longValue() == 0) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
return;
}
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
return;
}
case ValueTag.XS_INT_TAG: {
tvp.getValue(ip);
if (ip.intValue() == 0) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
return;
}
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
return;
}
case ValueTag.XS_STRING_TAG: {
tvp.getValue(utf8p);
if (utf8p.getUTFLength() == 0) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
return;
}
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
return;
}
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -1,7 +1,7 @@
package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
@@ -11,23 +11,10 @@ import edu.uci.ics.hyracks.algebricks.ru
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
-import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
public class FnFalseScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
- private static final byte[] BOOLEAN_FALSE_CONSTANT;
-
- static {
- BOOLEAN_FALSE_CONSTANT = new byte[2];
- BOOLEAN_FALSE_CONSTANT[0] = ValueTag.XS_BOOLEAN_TAG;
- BooleanPointable.setBoolean(BOOLEAN_FALSE_CONSTANT, 1, false);
- }
-
- public static void setFalse(IPointable p) {
- p.set(BOOLEAN_FALSE_CONSTANT, 0, 2);
- }
-
public FnFalseScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
super(args);
}
@@ -38,7 +25,7 @@ public class FnFalseScalarEvaluatorFacto
return new AbstractTaggedValueArgumentScalarEvaluator(args) {
@Override
protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
- result.set(BOOLEAN_FALSE_CONSTANT, 0, 2);
+ XDMConstants.setFalse(result);
}
};
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -1,6 +1,7 @@
package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
@@ -30,9 +31,9 @@ public class FnNotScalarEvaluatorFactory
TaggedValuePointable arg = args[0];
arg.getValue(bp);
if (bp.getBoolean()) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
} else {
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
}
}
};
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -1,7 +1,7 @@
package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
@@ -11,23 +11,10 @@ import edu.uci.ics.hyracks.algebricks.ru
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
-import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
public class FnTrueScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
- private static final byte[] BOOLEAN_TRUE_CONSTANT;
-
- static {
- BOOLEAN_TRUE_CONSTANT = new byte[2];
- BOOLEAN_TRUE_CONSTANT[0] = ValueTag.XS_BOOLEAN_TAG;
- BooleanPointable.setBoolean(BOOLEAN_TRUE_CONSTANT, 1, true);
- }
-
- public static void setTrue(IPointable p) {
- p.set(BOOLEAN_TRUE_CONSTANT, 0, 2);
- }
-
public FnTrueScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
super(args);
}
@@ -38,7 +25,7 @@ public class FnTrueScalarEvaluatorFactor
return new AbstractTaggedValueArgumentScalarEvaluator(args) {
@Override
protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
- result.set(BOOLEAN_TRUE_CONSTANT, 0, 2);
+ XDMConstants.setTrue(result);
}
};
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -1,6 +1,7 @@
package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
@@ -30,11 +31,11 @@ public class OrScalarEvaluatorFactory ex
for (TaggedValuePointable arg : args) {
arg.getValue(bp);
if (bp.getBoolean()) {
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
return;
}
}
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
}
};
}
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/nodeid/SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/nodeid/SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/nodeid/SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/nodeid/SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,32 @@
+package org.apache.vxquery.runtime.functions.nodeid;
+
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+
+public class SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory extends
+ AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+ throws AlgebricksException {
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ result.set(args[0]);
+ }
+ };
+ }
+}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -3,11 +3,10 @@ package org.apache.vxquery.runtime.funct
import org.apache.vxquery.datamodel.accessors.SequencePointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
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.bool.FnFalseScalarEvaluatorFactory;
-import org.apache.vxquery.runtime.functions.bool.FnTrueScalarEvaluatorFactory;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
@@ -33,11 +32,11 @@ public class FnEmptyScalarEvaluatorFacto
if (tvp.getTag() == ValueTag.SEQUENCE_TAG) {
tvp.getValue(seqp);
if (seqp.getEntryCount() == 0) {
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
return;
}
}
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
}
};
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -3,11 +3,10 @@ package org.apache.vxquery.runtime.funct
import org.apache.vxquery.datamodel.accessors.SequencePointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
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.bool.FnFalseScalarEvaluatorFactory;
-import org.apache.vxquery.runtime.functions.bool.FnTrueScalarEvaluatorFactory;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
@@ -33,11 +32,11 @@ public class FnExistsScalarEvaluatorFact
if (tvp.getTag() == ValueTag.SEQUENCE_TAG) {
tvp.getValue(seqp);
if (seqp.getEntryCount() == 0) {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
return;
}
}
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
}
};
}
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AbstractPathStepScalarEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AbstractPathStepScalarEvaluator.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AbstractPathStepScalarEvaluator.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AbstractPathStepScalarEvaluator.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,272 @@
+package org.apache.vxquery.runtime.functions.step;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.context.DynamicContext;
+import org.apache.vxquery.datamodel.accessors.SequencePointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.CodedQNamePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.AttributeNodePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.ElementNodePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.NodeTreePointable;
+import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
+import org.apache.vxquery.types.AttributeType;
+import org.apache.vxquery.types.ElementType;
+import org.apache.vxquery.types.NameTest;
+import org.apache.vxquery.types.NodeType;
+import org.apache.vxquery.types.SequenceType;
+
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.primitive.VoidPointable;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public abstract class AbstractPathStepScalarEvaluator extends AbstractTaggedValueArgumentScalarEvaluator {
+ protected final DynamicContext dCtx;
+
+ private final IntegerPointable ip;
+
+ private final NodeTreePointable ntp;
+
+ private final SequencePointable seqp;
+
+ private final ArrayBackedValueStorage seqAbvs;
+
+ private final SequenceBuilder seqb;
+
+ private final ArrayBackedValueStorage nodeAbvs;
+
+ private final TaggedValuePointable itemTvp;
+
+ private INodeFilter filter;
+
+ private boolean first;
+
+ public AbstractPathStepScalarEvaluator(IScalarEvaluator[] args, IHyracksTaskContext ctx) {
+ super(args);
+ dCtx = (DynamicContext) ctx.getJobletContext().getGlobalJobData();
+ ip = (IntegerPointable) IntegerPointable.FACTORY.createPointable();
+ ntp = (NodeTreePointable) NodeTreePointable.FACTORY.createPointable();
+ seqp = (SequencePointable) SequencePointable.FACTORY.createPointable();
+ seqAbvs = new ArrayBackedValueStorage();
+ seqb = new SequenceBuilder();
+ nodeAbvs = new ArrayBackedValueStorage();
+ itemTvp = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+ first = true;
+ }
+
+ private void setNodeTest(SequenceType sType) {
+ final NodeType nodeType = (NodeType) sType.getItemType();
+ switch (nodeType.getNodeKind()) {
+ case ANY:
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ return true;
+ }
+ };
+ break;
+
+ case ATTRIBUTE: {
+ AttributeType aType = (AttributeType) nodeType;
+ NameTest nameTest = aType.getNameTest();
+ byte[] uri = nameTest.getUri();
+ byte[] localName = nameTest.getLocalName();
+ final UTF8StringPointable urip = (UTF8StringPointable) (uri == null ? null
+ : UTF8StringPointable.FACTORY.createPointable());
+ final UTF8StringPointable localp = (UTF8StringPointable) (localName == null ? null
+ : UTF8StringPointable.FACTORY.createPointable());
+ if (uri != null) {
+ urip.set(uri, 0, uri.length);
+ }
+ if (localName != null) {
+ localp.set(localName, 0, localName.length);
+ }
+ final IPointable temp = VoidPointable.FACTORY.createPointable();
+ final AttributeNodePointable anp = (AttributeNodePointable) AttributeNodePointable.FACTORY
+ .createPointable();
+ final CodedQNamePointable cqp = (CodedQNamePointable) CodedQNamePointable.FACTORY.createPointable();
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ if (tvp.getTag() != ValueTag.ATTRIBUTE_NODE_TAG) {
+ return false;
+ }
+ tvp.getValue(anp);
+ anp.getName(cqp);
+ if (urip != null) {
+ ntp.getString(cqp.getNamespaceCode(), temp);
+ if (urip.compareTo(temp) != 0) {
+ return false;
+ }
+ }
+ if (localp != null) {
+ ntp.getString(cqp.getLocalCode(), temp);
+ if (localp.compareTo(temp) != 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+ };
+ break;
+ }
+
+ case COMMENT:
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ return tvp.getTag() == ValueTag.COMMENT_NODE_TAG;
+ }
+ };
+ break;
+
+ case DOCUMENT:
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ return tvp.getTag() == ValueTag.DOCUMENT_NODE_TAG;
+ }
+ };
+ break;
+
+ case ELEMENT: {
+ ElementType eType = (ElementType) nodeType;
+ NameTest nameTest = eType.getNameTest();
+ byte[] uri = nameTest.getUri();
+ byte[] localName = nameTest.getLocalName();
+ final UTF8StringPointable urip = (UTF8StringPointable) (uri == null ? null
+ : UTF8StringPointable.FACTORY.createPointable());
+ final UTF8StringPointable localp = (UTF8StringPointable) (localName == null ? null
+ : UTF8StringPointable.FACTORY.createPointable());
+ if (uri != null) {
+ urip.set(uri, 0, uri.length);
+ }
+ if (localName != null) {
+ localp.set(localName, 0, localName.length);
+ }
+ final IPointable temp = VoidPointable.FACTORY.createPointable();
+ final ElementNodePointable enp = (ElementNodePointable) ElementNodePointable.FACTORY.createPointable();
+ final CodedQNamePointable cqp = (CodedQNamePointable) CodedQNamePointable.FACTORY.createPointable();
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ if (tvp.getTag() != ValueTag.ELEMENT_NODE_TAG) {
+ return false;
+ }
+ tvp.getValue(enp);
+ enp.getName(cqp);
+ if (urip != null) {
+ ntp.getString(cqp.getNamespaceCode(), temp);
+ if (urip.compareTo(temp) != 0) {
+ return false;
+ }
+ }
+ if (localp != null) {
+ ntp.getString(cqp.getLocalCode(), temp);
+ if (localp.compareTo(temp) != 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+ };
+ break;
+ }
+
+ case PI:
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ return tvp.getTag() == ValueTag.PI_NODE_TAG;
+ }
+ };
+ break;
+
+ case TEXT:
+ filter = new INodeFilter() {
+ @Override
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp) {
+ return tvp.getTag() == ValueTag.TEXT_NODE_TAG;
+ }
+ };
+ break;
+ }
+ }
+
+ protected abstract void getSequence(NodeTreePointable ntp, SequencePointable seqp) throws SystemException;
+
+ @Override
+ protected final void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ try {
+ if (first) {
+ if (args[1].getTag() != ValueTag.XS_INT_TAG) {
+ throw new IllegalArgumentException("Expected int value tag, got: " + args[1].getTag());
+ }
+ args[1].getValue(ip);
+ int typeCode = ip.getInteger();
+ SequenceType sType = dCtx.getStaticContext().lookupSequenceType(typeCode);
+ setNodeTest(sType);
+ first = false;
+ }
+ if (args[0].getTag() != ValueTag.NODE_TREE_TAG) {
+ throw new SystemException(ErrorCode.SYSE0001);
+ }
+ args[0].getValue(ntp);
+ getSequence(ntp, seqp);
+ seqAbvs.reset();
+ seqb.reset(seqAbvs);
+ int seqSize = seqp.getEntryCount();
+ for (int i = 0; i < seqSize; ++i) {
+ seqp.getEntry(i, itemTvp);
+ if (matches()) {
+ appendNodeToResult();
+ }
+ }
+ seqb.finish();
+ result.set(seqAbvs);
+ } catch (IOException e) {
+ throw new SystemException(ErrorCode.SYSE0001, e);
+ }
+ }
+
+ private boolean matches() {
+ return filter.accept(ntp, itemTvp);
+ }
+
+ private void appendNodeToResult() throws IOException {
+ nodeAbvs.reset();
+ DataOutput mainOut = nodeAbvs.getDataOutput();
+ mainOut.write(ValueTag.NODE_TREE_TAG);
+ boolean hasDictionary = ntp.dictionaryExists() && hasDictionary(itemTvp.getTag());
+ byte header = (byte) (hasDictionary ? NodeTreePointable.HEADER_DICTIONARY_EXISTS_MASK : 0);
+ mainOut.write(header);
+ if (hasDictionary) {
+ mainOut.write(ntp.getByteArray(), ntp.getDictionaryOffset(), ntp.getDictionarySize());
+ }
+ mainOut.write(itemTvp.getByteArray(), itemTvp.getStartOffset(), itemTvp.getLength());
+ seqb.addItem(nodeAbvs);
+ }
+
+ private boolean hasDictionary(byte tag) {
+ switch (tag) {
+ case ValueTag.ATTRIBUTE_NODE_TAG:
+ case ValueTag.DOCUMENT_NODE_TAG:
+ case ValueTag.ELEMENT_NODE_TAG:
+ return true;
+ }
+ return false;
+ }
+
+ private interface INodeFilter {
+ public boolean accept(NodeTreePointable ntp, TaggedValuePointable tvp);
+ }
+}
\ No newline at end of file
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluator.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluator.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluator.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,38 @@
+package org.apache.vxquery.runtime.functions.step;
+
+import org.apache.vxquery.datamodel.accessors.SequencePointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.ElementNodePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.NodeTreePointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+
+public class AttributePathStepScalarEvaluator extends AbstractPathStepScalarEvaluator {
+ private final TaggedValuePointable rootTVP;
+
+ private final ElementNodePointable enp;
+
+ public AttributePathStepScalarEvaluator(IScalarEvaluator[] args, IHyracksTaskContext ctx) {
+ super(args, ctx);
+ rootTVP = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+ enp = (ElementNodePointable) ElementNodePointable.FACTORY.createPointable();
+ }
+
+ @Override
+ protected void getSequence(NodeTreePointable ntp, SequencePointable seqp) throws SystemException {
+ ntp.getRootNode(rootTVP);
+ switch (rootTVP.getTag()) {
+ case ValueTag.ELEMENT_NODE_TAG:
+ rootTVP.getValue(enp);
+ if (enp.attributesChunkExists()) {
+ enp.getAttributeSequence(ntp, seqp);
+ return;
+ }
+ }
+ XDMConstants.setEmptySequence(seqp);
+ }
+}
\ No newline at end of file
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluatorFactory.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/AttributePathStepScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,22 @@
+package org.apache.vxquery.runtime.functions.step;
+
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+
+public class AttributePathStepScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public AttributePathStepScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+ throws AlgebricksException {
+ return new AttributePathStepScalarEvaluator(args, ctx);
+ }
+}
\ No newline at end of file
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluator.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluator.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluator.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,47 @@
+package org.apache.vxquery.runtime.functions.step;
+
+import org.apache.vxquery.datamodel.accessors.SequencePointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.DocumentNodePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.ElementNodePointable;
+import org.apache.vxquery.datamodel.accessors.nodes.NodeTreePointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+
+public class ChildPathStepScalarEvaluator extends AbstractPathStepScalarEvaluator {
+ private final TaggedValuePointable rootTVP;
+
+ private final DocumentNodePointable dnp;
+
+ private final ElementNodePointable enp;
+
+ public ChildPathStepScalarEvaluator(IScalarEvaluator[] args, IHyracksTaskContext ctx) {
+ super(args, ctx);
+ rootTVP = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+ dnp = (DocumentNodePointable) DocumentNodePointable.FACTORY.createPointable();
+ enp = (ElementNodePointable) ElementNodePointable.FACTORY.createPointable();
+ }
+
+ @Override
+ protected void getSequence(NodeTreePointable ntp, SequencePointable seqp) throws SystemException {
+ ntp.getRootNode(rootTVP);
+ switch (rootTVP.getTag()) {
+ case ValueTag.DOCUMENT_NODE_TAG:
+ rootTVP.getValue(dnp);
+ dnp.getContent(ntp, seqp);
+ return;
+
+ case ValueTag.ELEMENT_NODE_TAG:
+ rootTVP.getValue(enp);
+ if (enp.childrenChunkExists()) {
+ enp.getChildrenSequence(ntp, seqp);
+ return;
+ }
+ }
+ XDMConstants.setEmptySequence(seqp);
+ }
+}
\ No newline at end of file
Added: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluatorFactory.java?rev=1375368&view=auto
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/ChildPathStepScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -0,0 +1,22 @@
+package org.apache.vxquery.runtime.functions.step;
+
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+
+public class ChildPathStepScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public ChildPathStepScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+ throws AlgebricksException {
+ return new ChildPathStepScalarEvaluator(args, ctx);
+ }
+}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java Tue Aug 21 02:05:30 2012
@@ -1,9 +1,8 @@
package org.apache.vxquery.runtime.functions.type;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.bool.FnFalseScalarEvaluatorFactory;
-import org.apache.vxquery.runtime.functions.bool.FnTrueScalarEvaluatorFactory;
import org.apache.vxquery.types.SequenceType;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -29,9 +28,9 @@ public class InstanceOfScalarEvaluatorFa
protected void evaluate(TaggedValuePointable tvp, IPointable result) throws SystemException {
boolean success = matcher.sequenceTypeMatch(tvp);
if (success) {
- FnTrueScalarEvaluatorFactory.setTrue(result);
+ XDMConstants.setTrue(result);
} else {
- FnFalseScalarEvaluatorFactory.setFalse(result);
+ XDMConstants.setFalse(result);
}
}
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java Tue Aug 21 02:05:30 2012
@@ -16,11 +16,14 @@
*/
package org.apache.vxquery.types;
+import java.io.Serializable;
import java.util.Arrays;
import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-public final class NameTest {
+public final class NameTest implements Serializable {
+ private static final long serialVersionUID = 1L;
+
public static final String WILDCARD = null;
public static final NameTest STAR_NAMETEST = new NameTest(null, null);
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/SequenceType.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/SequenceType.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/SequenceType.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/SequenceType.java Tue Aug 21 02:05:30 2012
@@ -16,11 +16,14 @@
*/
package org.apache.vxquery.types;
+import java.io.Serializable;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
-public final class SequenceType {
+public final class SequenceType implements Serializable {
+ private static final long serialVersionUID = 1L;
+
public static final Map<ItemType, SequenceType[]> BUILTIN_SEQ_TYPES;
private ItemType itemType;
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/XQType.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/XQType.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/XQType.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/XQType.java Tue Aug 21 02:05:30 2012
@@ -16,5 +16,7 @@
*/
package org.apache.vxquery.types;
-public interface XQType {
+import java.io.Serializable;
+
+public interface XQType extends Serializable {
}
\ No newline at end of file
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java?rev=1375368&r1=1375367&r2=1375368&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java Tue Aug 21 02:05:30 2012
@@ -24,6 +24,7 @@ import org.apache.vxquery.compiler.algeb
import org.apache.vxquery.compiler.algebricks.VXQueryComparatorFactoryProvider;
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.rewriter.RewriteRuleset;
import org.apache.vxquery.exceptions.ErrorCode;
@@ -35,6 +36,7 @@ import org.apache.vxquery.types.Sequence
import org.apache.vxquery.xmlquery.ast.ModuleNode;
import org.apache.vxquery.xmlquery.translator.XMLQueryTranslator;
+import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
import edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder;
@@ -110,6 +112,8 @@ public class XMLQueryCompiler {
return null;
}
});
+ builder.setNullWriterFactory(new VXQueryNullWriterFactory());
+ builder.setClusterLocations(new AlgebricksAbsolutePartitionConstraint(new String[] { "nc1" }));
cFactory = builder.create();
mdProvider = new VXQueryMetadataProvider();
}