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/06/25 12:59:08 UTC
svn commit: r1353456 - in
/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery:
functions/ runtime/functions/bool/ runtime/functions/sequence/
Author: vinayakb
Date: Mon Jun 25 10:59:07 2012
New Revision: 1353456
URL: http://svn.apache.org/viewvc?rev=1353456&view=rev
Log:
Added fn:exists, fn:empty, fn:boolean
Added:
incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java
incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java
Modified:
incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml
incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml?rev=1353456&r1=1353455&r2=1353456&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml Mon Jun 25 10:59:07 2012
@@ -82,6 +82,7 @@
<function name="fn:boolean">
<param name="arg" type="item()*"/>
<return type="xs:boolean"/>
+ <runtime type="scalar" class="org.apache.vxquery.runtime.functions.bool.FnBooleanScalarEvaluatorFactory"/>
</function>
<!-- fn:ceiling($arg as numeric?) as numeric? -->
@@ -259,6 +260,7 @@
<function name="fn:empty">
<param name="arg" type="item()*"/>
<return type="xs:boolean"/>
+ <runtime type="scalar" class="org.apache.vxquery.runtime.functions.sequence.FnEmptyScalarEvaluatorFactory"/>
</function>
<!-- fn:encode-for-uri($uri-part as xs:string?) as xs:string -->
@@ -324,6 +326,7 @@
<function name="fn:exists">
<param name="arg" type="item()*"/>
<return type="xs:boolean"/>
+ <runtime type="scalar" class="org.apache.vxquery.runtime.functions.sequence.FnExistsScalarEvaluatorFactory"/>
</function>
<!-- fn:false() as xs:boolean -->
Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java?rev=1353456&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java Mon Jun 25 10:59:07 2012
@@ -0,0 +1,87 @@
+package org.apache.vxquery.runtime.functions.bool;
+
+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.exceptions.ErrorCode;
+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.data.std.api.IPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public FnBooleanScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
+ final SequencePointable seqp = new SequencePointable();
+ final LongPointable lp = (LongPointable) LongPointable.FACTORY.createPointable();
+ final IntegerPointable ip = (IntegerPointable) IntegerPointable.FACTORY.createPointable();
+ final UTF8StringPointable utf8p = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ TaggedValuePointable tvp = args[0];
+ switch (tvp.getTag()) {
+ case ValueTag.SEQUENCE_TAG: {
+ tvp.getValue(seqp);
+ if (seqp.getEntryCount() == 0) {
+ FnFalseScalarEvaluatorFactory.setFalse(result);
+ return;
+ }
+ FnTrueScalarEvaluatorFactory.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_BOOLEAN_TAG: {
+ result.set(tvp);
+ return;
+ }
+
+ case ValueTag.XS_LONG_TAG:
+ case ValueTag.XS_INTEGER_TAG: {
+ tvp.getValue(lp);
+ if (lp.longValue() == 0) {
+ FnFalseScalarEvaluatorFactory.setFalse(result);
+ return;
+ }
+ FnTrueScalarEvaluatorFactory.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_INT_TAG: {
+ tvp.getValue(ip);
+ if (ip.intValue() == 0) {
+ FnFalseScalarEvaluatorFactory.setFalse(result);
+ return;
+ }
+ FnTrueScalarEvaluatorFactory.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_STRING_TAG: {
+ tvp.getValue(utf8p);
+ if (utf8p.getUTFLength() == 0) {
+ FnFalseScalarEvaluatorFactory.setFalse(result);
+ return;
+ }
+ FnTrueScalarEvaluatorFactory.setTrue(result);
+ return;
+ }
+ }
+ throw new SystemException(ErrorCode.FORG0006);
+ }
+ };
+ }
+}
\ No newline at end of file
Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java?rev=1353456&r1=1353455&r2=1353456&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java Mon Jun 25 10:59:07 2012
@@ -23,6 +23,10 @@ public class FnFalseScalarEvaluatorFacto
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);
}
Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java?rev=1353456&r1=1353455&r2=1353456&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java Mon Jun 25 10:59:07 2012
@@ -23,6 +23,10 @@ public class FnTrueScalarEvaluatorFactor
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);
}
Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java?rev=1353456&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnEmptyScalarEvaluatorFactory.java Mon Jun 25 10:59:07 2012
@@ -0,0 +1,42 @@
+package org.apache.vxquery.runtime.functions.sequence;
+
+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.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;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+
+public class FnEmptyScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public FnEmptyScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
+ final SequencePointable seqp = new SequencePointable();
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ TaggedValuePointable tvp = args[0];
+ if (tvp.getTag() == ValueTag.SEQUENCE_TAG) {
+ tvp.getValue(seqp);
+ if (seqp.getEntryCount() == 0) {
+ FnTrueScalarEvaluatorFactory.setTrue(result);
+ return;
+ }
+ }
+ FnFalseScalarEvaluatorFactory.setFalse(result);
+ }
+ };
+ }
+}
\ No newline at end of file
Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java?rev=1353456&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/FnExistsScalarEvaluatorFactory.java Mon Jun 25 10:59:07 2012
@@ -0,0 +1,42 @@
+package org.apache.vxquery.runtime.functions.sequence;
+
+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.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;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+
+public class FnExistsScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public FnExistsScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
+ final SequencePointable seqp = new SequencePointable();
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ TaggedValuePointable tvp = args[0];
+ if (tvp.getTag() == ValueTag.SEQUENCE_TAG) {
+ tvp.getValue(seqp);
+ if (seqp.getEntryCount() == 0) {
+ FnFalseScalarEvaluatorFactory.setFalse(result);
+ return;
+ }
+ }
+ FnTrueScalarEvaluatorFactory.setTrue(result);
+ }
+ };
+ }
+}
\ No newline at end of file