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);