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/20 10:16:13 UTC
svn commit: r1351984 [2/2] - in
/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery:
compiler/algebricks/ datamodel/values/ functions/
runtime/functions/arithmetic/ runtime/functions/bool/
runtime/functions/sequ...
Added: 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=1351984&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java Wed Jun 20 08:16:12 2012
@@ -0,0 +1,39 @@
+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.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.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 FnFalseScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ result.set(BOOLEAN_FALSE_CONSTANT, 0, 2);
+ }
+ };
+ }
+}
\ No newline at end of file
Added: 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=1351984&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java Wed Jun 20 08:16:12 2012
@@ -0,0 +1,39 @@
+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.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.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 FnTrueScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ result.set(BOOLEAN_TRUE_CONSTANT, 0, 2);
+ }
+ };
+ }
+}
\ No newline at end of file
Added: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/ConcatenateScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/ConcatenateScalarEvaluatorFactory.java?rev=1351984&view=auto
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/ConcatenateScalarEvaluatorFactory.java (added)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/sequence/ConcatenateScalarEvaluatorFactory.java Wed Jun 20 08:16:12 2012
@@ -0,0 +1,92 @@
+package org.apache.vxquery.runtime.functions.sequence;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+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 org.apache.vxquery.util.GrowableIntArray;
+
+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.VoidPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.ArrayBackedValueStorage;
+
+public class ConcatenateScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+ private static final long serialVersionUID = 1L;
+
+ public ConcatenateScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ super(args);
+ }
+
+ @Override
+ protected IScalarEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
+ final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
+ final GrowableIntArray slots = new GrowableIntArray();
+ final ArrayBackedValueStorage dataArea = new ArrayBackedValueStorage();
+ final SequencePointable seq = new SequencePointable();
+ final VoidPointable p = (VoidPointable) VoidPointable.FACTORY.createPointable();
+ return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+ @Override
+ protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+ abvs.reset();
+ slots.clear();
+ dataArea.reset();
+ for (int i = 0; i < args.length; ++i) {
+ TaggedValuePointable tvp = args[i];
+ if (tvp.getTag() == ValueTag.SEQUENCE_TAG) {
+ tvp.getValue(seq);
+ int seqLen = seq.getEntryCount();
+ for (int j = 0; j < seqLen; ++j) {
+ seq.getEntry(j, p);
+ addItem(p);
+ }
+ } else {
+ addItem(tvp);
+ }
+ }
+ if (slots.getSize() != 1) {
+ assembleResult(abvs, slots, dataArea);
+ result.set(abvs);
+ } else {
+ result.set(dataArea);
+ }
+ }
+
+ private void assembleResult(ArrayBackedValueStorage abvs, GrowableIntArray slots,
+ ArrayBackedValueStorage dataArea) throws SystemException {
+ try {
+ DataOutput out = abvs.getDataOutput();
+ out.write(ValueTag.SEQUENCE_TAG);
+ int size = slots.getSize();
+ out.writeInt(size);
+ if (size > 0) {
+ int[] slotArray = slots.getArray();
+ for (int i = 0; i < size; ++i) {
+ out.writeInt(slotArray[i]);
+ }
+ out.write(dataArea.getByteArray(), dataArea.getStartOffset(), dataArea.getLength());
+ }
+ } catch (IOException e) {
+ throw new SystemException(ErrorCode.SYSE0001, e);
+ }
+ }
+
+ private void addItem(final IPointable p) throws SystemException {
+ try {
+ dataArea.getDataOutput().write(p.getByteArray(), p.getStartOffset(), p.getLength());
+ slots.append(dataArea.getLength());
+ } catch (IOException e) {
+ throw new SystemException(ErrorCode.SYSE0001, e);
+ }
+ }
+ };
+ }
+}
\ No newline at end of file
Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java?rev=1351984&r1=1351983&r2=1351984&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java Wed Jun 20 08:16:12 2012
@@ -24,6 +24,7 @@ import org.apache.vxquery.context.Static
import org.apache.vxquery.context.ThinStaticContextImpl;
import org.apache.vxquery.context.XQueryVariable;
import org.apache.vxquery.datamodel.builders.atomic.StringValueBuilder;
+import org.apache.vxquery.datamodel.values.ValueTag;
import org.apache.vxquery.exceptions.ErrorCode;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.functions.BuiltinFunctions;
@@ -38,7 +39,6 @@ import org.apache.vxquery.types.AnyNodeT
import org.apache.vxquery.types.AnyType;
import org.apache.vxquery.types.AtomicType;
import org.apache.vxquery.types.AttributeType;
-import org.apache.vxquery.types.BuiltinTypeConstants;
import org.apache.vxquery.types.BuiltinTypeRegistry;
import org.apache.vxquery.types.CommentType;
import org.apache.vxquery.types.DocumentType;
@@ -1802,50 +1802,50 @@ public class XMLQueryTranslator {
AtomicType at = (AtomicType) it;
byte[] bytes = null;
switch (at.getTypeId()) {
- case BuiltinTypeConstants.XS_BOOLEAN_TYPE_ID: {
+ case ValueTag.XS_BOOLEAN_TAG: {
baaos.reset();
try {
- dOut.write((byte) BuiltinTypeConstants.XS_BOOLEAN_TYPE_ID);
+ dOut.write((byte) ValueTag.XS_BOOLEAN_TAG);
dOut.writeByte(((Boolean) value).booleanValue() ? 1 : 0);
} catch (IOException e) {
throw new SystemException(ErrorCode.SYSE0001, e);
}
break;
}
- case BuiltinTypeConstants.XS_INT_TYPE_ID: {
+ case ValueTag.XS_INT_TAG: {
baaos.reset();
try {
- dOut.write((byte) BuiltinTypeConstants.XS_INT_TYPE_ID);
+ dOut.write((byte) ValueTag.XS_INT_TAG);
dOut.writeInt(((Number) value).intValue());
} catch (IOException e) {
throw new SystemException(ErrorCode.SYSE0001, e);
}
break;
}
- case BuiltinTypeConstants.XS_INTEGER_TYPE_ID: {
+ case ValueTag.XS_INTEGER_TAG: {
baaos.reset();
try {
- dOut.write((byte) BuiltinTypeConstants.XS_INTEGER_TYPE_ID);
+ dOut.write((byte) ValueTag.XS_INTEGER_TAG);
dOut.writeLong(((Number) value).longValue());
} catch (IOException e) {
throw new SystemException(ErrorCode.SYSE0001, e);
}
break;
}
- case BuiltinTypeConstants.XS_DOUBLE_TYPE_ID: {
+ case ValueTag.XS_DOUBLE_TAG: {
baaos.reset();
try {
- dOut.write((byte) BuiltinTypeConstants.XS_DOUBLE_TYPE_ID);
+ dOut.write((byte) ValueTag.XS_DOUBLE_TAG);
dOut.writeDouble(((Number) value).doubleValue());
} catch (IOException e) {
throw new SystemException(ErrorCode.SYSE0001, e);
}
break;
}
- case BuiltinTypeConstants.XS_STRING_TYPE_ID: {
+ case ValueTag.XS_STRING_TAG: {
baaos.reset();
try {
- dOut.write((byte) BuiltinTypeConstants.XS_STRING_TYPE_ID);
+ dOut.write((byte) ValueTag.XS_STRING_TAG);
stringVB.write((CharSequence) value, dOut);
} catch (IOException e) {
throw new SystemException(ErrorCode.SYSE0001, e);