You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2017/05/01 04:35:00 UTC

[2/8] vxquery git commit: VXQUERY-240: Update Hyracks Dependency to version 0.3.0.

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnLowerCaseEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnLowerCaseEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnLowerCaseEvaluatorFactory.java
index cf431cd..7a0914f 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnLowerCaseEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnLowerCaseEvaluatorFactory.java
@@ -16,6 +16,11 @@
  */
 package org.apache.vxquery.runtime.functions.strings;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -24,12 +29,6 @@ import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-
 public class FnLowerCaseEvaluatorFactory extends AbstractCharacterIteratorCopyingEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -39,7 +38,7 @@ public class FnLowerCaseEvaluatorFactory extends AbstractCharacterIteratorCopyin
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final ICharacterIterator charIterator = new LowerCaseCharacterIterator(new UTF8StringCharacterIterator(stringp));
         final SequencePointable seqp = (SequencePointable) SequencePointable.FACTORY.createPointable();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStartsWithEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStartsWithEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStartsWithEvaluatorFactory.java
index 7d0cb7a..db9404a 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStartsWithEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStartsWithEvaluatorFactory.java
@@ -16,6 +16,12 @@
  */
 package org.apache.vxquery.runtime.functions.strings;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -26,13 +32,6 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-
 public class FnStartsWithEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -42,7 +41,7 @@ public class FnStartsWithEvaluatorFactory extends AbstractTaggedValueArgumentSca
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp1 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp2 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp3 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
@@ -105,7 +104,7 @@ public class FnStartsWithEvaluatorFactory extends AbstractTaggedValueArgumentSca
                 // TODO use the third value as collation
 
                 // Only need to run comparisons if they both have a non empty string.
-                if (stringp1.getLength() > 2 && stringp2.getLength() > 2) {
+                if (stringp1.getUTF8Length() > 0 && stringp2.getUTF8Length() > 0) {
                     int c1;
                     int c2;
                     while (true) {
@@ -121,7 +120,7 @@ public class FnStartsWithEvaluatorFactory extends AbstractTaggedValueArgumentSca
                             break;
                         }
                     }
-                } else if (stringp2.getLength() == 2) {
+                } else if (stringp2.getUTF8Length() == 0) {
                     booleanResult[1] = 1;
                 }
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringJoinEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringJoinEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringJoinEvaluatorFactory.java
index 576b409..e2dbbee 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringJoinEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringJoinEvaluatorFactory.java
@@ -19,8 +19,17 @@ package org.apache.vxquery.runtime.functions.strings;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.util.GrowableArray;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.builders.atomic.VXQueryUTF8StringBuilder;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
@@ -28,16 +37,9 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public class FnStringJoinEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
+    private static final int STRING_EXPECTED_LENGTH = 300;
 
     public FnStringJoinEvaluatorFactory(IScalarEvaluatorFactory[] args) {
         super(args);
@@ -45,12 +47,14 @@ public class FnStringJoinEvaluatorFactory extends AbstractTaggedValueArgumentSca
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final TaggedValuePointable tvp = new TaggedValuePointable();
         final UTF8StringPointable stringp1 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp2 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final SequencePointable seq = (SequencePointable) SequencePointable.FACTORY.createPointable();
+        final GrowableArray ga = new GrowableArray();
+        final VXQueryUTF8StringBuilder sb = new VXQueryUTF8StringBuilder();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -90,16 +94,15 @@ public class FnStringJoinEvaluatorFactory extends AbstractTaggedValueArgumentSca
                     out.write(ValueTag.XS_STRING_TAG);
 
                     // Default values for the length and update later
-                    out.write(0);
-                    out.write(0);
+                    ga.reset();
+                    sb.reset(ga, STRING_EXPECTED_LENGTH);
 
                     int seqLen = seq.getEntryCount();
                     if (seqLen != 0) {
                         for (int j = 0; j < seqLen; ++j) {
                             // Add separator if more than one value.
                             if (j > 0) {
-                                out.write(stringp2.getByteArray(), stringp2.getStartOffset() + 2,
-                                        stringp2.getUTFLength());
+                                sb.appendUtf8StringPointable(stringp2);
                             }
                             // Get string from sequence.
                             seq.getEntry(j, tvp);
@@ -107,13 +110,11 @@ public class FnStringJoinEvaluatorFactory extends AbstractTaggedValueArgumentSca
                                 throw new SystemException(ErrorCode.FORG0006);
                             }
                             tvp.getValue(stringp1);
-                            out.write(stringp1.getByteArray(), stringp1.getStartOffset() + 2, stringp1.getUTFLength());
+                            sb.appendUtf8StringPointable(stringp1);
                         }
-
-                        // Update the full length string in the byte array.
-                        abvs.getByteArray()[1] = (byte) (((abvs.getLength() - 3) >>> 8) & 0xFF);
-                        abvs.getByteArray()[2] = (byte) (((abvs.getLength() - 3) >>> 0) & 0xFF);
                     }
+                    sb.finish();
+                    out.write(ga.getByteArray(), 0, ga.getLength());
 
                     result.set(abvs.getByteArray(), abvs.getStartOffset(), abvs.getLength());
                 } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringLengthEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringLengthEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringLengthEvaluatorFactory.java
index 298b45c..363a73d 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringLengthEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringLengthEvaluatorFactory.java
@@ -18,6 +18,13 @@ package org.apache.vxquery.runtime.functions.strings;
 
 import java.io.DataOutput;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -28,14 +35,6 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public class FnStringLengthEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -45,7 +44,7 @@ public class FnStringLengthEvaluatorFactory extends AbstractTaggedValueArgumentS
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final DataOutput dOut = abvs.getDataOutput();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringScalarEvaluatorFactory.java
index 27b5463..2eb927b 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringScalarEvaluatorFactory.java
@@ -19,6 +19,13 @@ package org.apache.vxquery.runtime.functions.strings;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -30,14 +37,6 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
 import org.apache.vxquery.runtime.functions.cast.CastToStringOperation;
 import org.apache.vxquery.runtime.functions.util.AtomizeHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public class FnStringScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -47,7 +46,7 @@ public class FnStringScalarEvaluatorFactory extends AbstractTaggedValueArgumentS
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final DataOutput dOut = abvs.getDataOutput();
         final CastToStringOperation castToString = new CastToStringOperation();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringToCodepointsEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringToCodepointsEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringToCodepointsEvaluatorFactory.java
index f77d869..c95a7ec 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringToCodepointsEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnStringToCodepointsEvaluatorFactory.java
@@ -19,6 +19,13 @@ package org.apache.vxquery.runtime.functions.strings;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder;
@@ -30,14 +37,6 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public class FnStringToCodepointsEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -47,7 +46,7 @@ public class FnStringToCodepointsEvaluatorFactory extends AbstractTaggedValueArg
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringCharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
         final SequencePointable seqp = (SequencePointable) SequencePointable.FACTORY.createPointable();
@@ -75,7 +74,7 @@ public class FnStringToCodepointsEvaluatorFactory extends AbstractTaggedValueArg
                         throw new SystemException(ErrorCode.FORG0006);
                     }
                     tvp1.getValue(stringp);
-                    if (stringp.getLength() == 2) {
+                    if (stringp.getUTF8Length() == 0) {
                         XDMConstants.setEmptySequence(result);
                         return;
                     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringAfterEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringAfterEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringAfterEvaluatorFactory.java
index f069152..ca4143d 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringAfterEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringAfterEvaluatorFactory.java
@@ -16,6 +16,11 @@
  */
 package org.apache.vxquery.runtime.functions.strings;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -24,12 +29,6 @@ import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-
 public class FnSubstringAfterEvaluatorFactory extends AbstractCharacterIteratorCopyingEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -39,7 +38,7 @@ public class FnSubstringAfterEvaluatorFactory extends AbstractCharacterIteratorC
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp1 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp2 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp3 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringBeforeEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringBeforeEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringBeforeEvaluatorFactory.java
index fb8e937..acc931e 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringBeforeEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringBeforeEvaluatorFactory.java
@@ -16,6 +16,11 @@
  */
 package org.apache.vxquery.runtime.functions.strings;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -24,12 +29,6 @@ import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-
 public class FnSubstringBeforeEvaluatorFactory extends AbstractCharacterIteratorCopyingEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -39,7 +38,7 @@ public class FnSubstringBeforeEvaluatorFactory extends AbstractCharacterIterator
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp1 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp2 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final UTF8StringPointable stringp3 = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringEvaluatorFactory.java
index 0691a80..d04bcfe 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnSubstringEvaluatorFactory.java
@@ -16,22 +16,21 @@
  */
 package org.apache.vxquery.runtime.functions.strings;
 
-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.util.FunctionHelper;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.primitive.DoublePointable;
 import org.apache.hyracks.data.std.primitive.LongPointable;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+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.util.FunctionHelper;
 
 public class FnSubstringEvaluatorFactory extends AbstractCharacterIteratorCopyingEvaluatorFactory {
     private static final long serialVersionUID = 1L;
@@ -57,7 +56,7 @@ public class FnSubstringEvaluatorFactory extends AbstractCharacterIteratorCopyin
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final DoublePointable doublep = (DoublePointable) DoublePointable.FACTORY.createPointable();
         final LongPointable longp = (LongPointable) LongPointable.FACTORY.createPointable();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnUpperCaseEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnUpperCaseEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnUpperCaseEvaluatorFactory.java
index 08492ff..c80fb48 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnUpperCaseEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/FnUpperCaseEvaluatorFactory.java
@@ -16,6 +16,11 @@
  */
 package org.apache.vxquery.runtime.functions.strings;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -24,12 +29,6 @@ import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-
 public class FnUpperCaseEvaluatorFactory extends AbstractCharacterIteratorCopyingEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -39,7 +38,7 @@ public class FnUpperCaseEvaluatorFactory extends AbstractCharacterIteratorCopyin
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         final ICharacterIterator charIterator = new UpperCaseCharacterIterator(new UTF8StringCharacterIterator(stringp));
         final SequencePointable seqp = (SequencePointable) SequencePointable.FACTORY.createPointable();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/UTF8StringCharacterIterator.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/UTF8StringCharacterIterator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/UTF8StringCharacterIterator.java
index c170384..5b66bbf 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/UTF8StringCharacterIterator.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/strings/UTF8StringCharacterIterator.java
@@ -45,13 +45,7 @@ public class UTF8StringCharacterIterator implements ICharacterIterator {
                 LOGGER.finer("  UTF8StringCharacterIterator char[" + byteOffset + "] = " + c);
             }
             // Increment cursor
-            if ((c >= 0x0001) && (c <= 0x007F)) {
-                ++byteOffset;
-            } else if (c > 0x07FF) {
-                byteOffset += 3;
-            } else {
-                byteOffset += 2;
-            }
+            byteOffset += stringp.charSize(byteOffset);
         }
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.finer("  END UTF8StringCharacterIterator char[" + byteOffset + "] = " + c);
@@ -61,7 +55,7 @@ public class UTF8StringCharacterIterator implements ICharacterIterator {
 
     @Override
     public void reset() {
-        byteOffset = 2;
+        byteOffset = stringp.getMetaDataLength();
     }
 
     public void setByteOffset(int byteOffset) {

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/trace/FnTraceScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/trace/FnTraceScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/trace/FnTraceScalarEvaluatorFactory.java
index a202dc5..9159010 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/trace/FnTraceScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/trace/FnTraceScalarEvaluatorFactory.java
@@ -16,10 +16,10 @@
 */
 package org.apache.vxquery.runtime.functions.trace;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -39,7 +39,7 @@ public class FnTraceScalarEvaluatorFactory extends AbstractTaggedValueArgumentSc
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
 
             @Override

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java
index d9c5796..fc8b478 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/InstanceOfScalarEvaluatorFactory.java
@@ -16,16 +16,15 @@
  */
 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.types.SequenceType;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.types.SequenceType;
 
 public class InstanceOfScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
@@ -36,7 +35,7 @@ public class InstanceOfScalarEvaluatorFactory extends AbstractTypeScalarEvaluato
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         return new AbstractTypeScalarEvaluator(args, ctx) {
             private final SequenceTypeMatcher matcher = new SequenceTypeMatcher();
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java
index c1bb24e..f2088d7 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java
@@ -18,6 +18,12 @@ package org.apache.vxquery.runtime.functions.type;
 
 import java.io.DataOutput;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -30,13 +36,6 @@ import org.apache.vxquery.runtime.functions.cast.CastToStringOperation;
 import org.apache.vxquery.types.BuiltinTypeRegistry;
 import org.apache.vxquery.types.SequenceType;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public class PromoteScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
@@ -46,7 +45,7 @@ public class PromoteScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFa
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         return new AbstractTypeScalarEvaluator(args, ctx) {
             final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
             final DataOutput dOut = abvs.getDataOutput();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java
index 4913c71..0863de2 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java
@@ -16,16 +16,15 @@
  */
 package org.apache.vxquery.runtime.functions.type;
 
-import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.exceptions.ErrorCode;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.types.SequenceType;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.types.SequenceType;
 
 public class TreatScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
@@ -36,7 +35,7 @@ public class TreatScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFact
 
     @Override
     protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
-            throws AlgebricksException {
+            throws HyracksDataException {
         return new AbstractTypeScalarEvaluator(args, ctx) {
             private final SequenceTypeMatcher matcher = new SequenceTypeMatcher();
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryScalarEvaluatorFactory.java
index bd8c360..35b2d24 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryScalarEvaluatorFactory.java
@@ -18,6 +18,13 @@ package org.apache.vxquery.runtime.functions.unary;
 
 import java.io.DataOutput;
 
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
@@ -28,14 +35,6 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
 import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 import org.apache.vxquery.types.BuiltinTypeRegistry;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public abstract class AbstractNumericUnaryScalarEvaluatorFactory extends
         AbstractTaggedValueArgumentScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
@@ -46,7 +45,7 @@ public abstract class AbstractNumericUnaryScalarEvaluatorFactory extends
 
     @Override
     protected AbstractTaggedValueArgumentScalarEvaluator createEvaluator(IHyracksTaskContext ctx,
-            IScalarEvaluator[] args) throws AlgebricksException {
+            IScalarEvaluator[] args) throws HyracksDataException {
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             final AbstractNumericUnaryOperation aOp = createNumericUnaryOperation();
             final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/AtomizeHelper.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/AtomizeHelper.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/AtomizeHelper.java
index c31a5cf..a8e5652 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/AtomizeHelper.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/AtomizeHelper.java
@@ -19,6 +19,12 @@ package org.apache.vxquery.runtime.functions.util;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
 import org.apache.vxquery.datamodel.accessors.PointablePool;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
@@ -29,27 +35,27 @@ import org.apache.vxquery.datamodel.accessors.nodes.NodeTreePointable;
 import org.apache.vxquery.datamodel.accessors.nodes.PINodePointable;
 import org.apache.vxquery.datamodel.accessors.nodes.TextOrCommentNodePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
-
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.VoidPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
 
 public class AtomizeHelper {
-    AttributeNodePointable anp = (AttributeNodePointable) AttributeNodePointable.FACTORY.createPointable();
-    DocumentNodePointable dnp = (DocumentNodePointable) DocumentNodePointable.FACTORY.createPointable();
-    ElementNodePointable enp = (ElementNodePointable) ElementNodePointable.FACTORY.createPointable();
-    NodeTreePointable ntp = (NodeTreePointable) NodeTreePointable.FACTORY.createPointable();
-    PINodePointable pnp = (PINodePointable) PINodePointable.FACTORY.createPointable();
-    SequencePointable sp = (SequencePointable) SequencePointable.FACTORY.createPointable();
-    TextOrCommentNodePointable tcnp = (TextOrCommentNodePointable) TextOrCommentNodePointable.FACTORY.createPointable();
-    ArrayBackedValueStorage tempABVS = new ArrayBackedValueStorage();
-    TaggedValuePointable tempTVP = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
-    VoidPointable vp = (VoidPointable) VoidPointable.FACTORY.createPointable();
+    private static final int STRING_EXPECTED_LENGTH = 300;
+    private final GrowableArray ga = new GrowableArray();
+    private final UTF8StringBuilder sb = new UTF8StringBuilder();
+    private final AttributeNodePointable anp = (AttributeNodePointable) AttributeNodePointable.FACTORY
+            .createPointable();
+    private final DocumentNodePointable dnp = (DocumentNodePointable) DocumentNodePointable.FACTORY.createPointable();
+    private final ElementNodePointable enp = (ElementNodePointable) ElementNodePointable.FACTORY.createPointable();
+    private final NodeTreePointable ntp = (NodeTreePointable) NodeTreePointable.FACTORY.createPointable();
+    private final PINodePointable pnp = (PINodePointable) PINodePointable.FACTORY.createPointable();
+    private final SequencePointable sp = (SequencePointable) SequencePointable.FACTORY.createPointable();
+    private final TextOrCommentNodePointable tcnp = (TextOrCommentNodePointable) TextOrCommentNodePointable.FACTORY
+            .createPointable();
+    private final ArrayBackedValueStorage tempABVS = new ArrayBackedValueStorage();
+    private final TaggedValuePointable tempTVP = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+    private final VoidPointable vp = (VoidPointable) VoidPointable.FACTORY.createPointable();
 
-    public void atomize(TaggedValuePointable tvp, PointablePool pp, IPointable result)
-            throws SystemException, IOException {
+    public void atomize(TaggedValuePointable tvp, PointablePool pp, IPointable result) throws SystemException, IOException {
         switch (tvp.getTag()) {
             case ValueTag.NODE_TREE_TAG:
                 tvp.getValue(ntp);
@@ -114,7 +120,7 @@ public class AtomizeHelper {
         }
     }
 
-    public static void buildConcatenationRec(SequencePointable sp, PointablePool pp, DataOutput out,
+    public static void buildConcatenationRec(SequencePointable sp, PointablePool pp, UTF8StringBuilder sb,
             NodeTreePointable ntp) throws IOException {
         TaggedValuePointable tempTVP2 = pp.takeOne(TaggedValuePointable.class);
         int nItems = sp.getEntryCount();
@@ -123,13 +129,13 @@ public class AtomizeHelper {
             switch (tempTVP2.getTag()) {
                 case ValueTag.TEXT_NODE_TAG: {
                     TextOrCommentNodePointable tcnp = pp.takeOne(TextOrCommentNodePointable.class);
-                    VoidPointable vp = pp.takeOne(VoidPointable.class);
+                    UTF8StringPointable utf8sp = pp.takeOne(UTF8StringPointable.class);
                     try {
                         tempTVP2.getValue(tcnp);
-                        tcnp.getValue(ntp, vp);
-                        out.write(vp.getByteArray(), vp.getStartOffset() + 2, vp.getLength() - 2);
+                        tcnp.getValue(ntp, utf8sp);
+                        sb.appendUtf8StringPointable(utf8sp);
                     } finally {
-                        pp.giveBack(vp);
+                        pp.giveBack(utf8sp);
                         pp.giveBack(tcnp);
                     }
                     break;
@@ -141,7 +147,7 @@ public class AtomizeHelper {
                         tempTVP2.getValue(enp);
                         if (enp.childrenChunkExists()) {
                             enp.getChildrenSequence(ntp, sp2);
-                            buildConcatenationRec(sp2, pp, out, ntp);
+                            buildConcatenationRec(sp2, pp, sb, ntp);
                         }
                     } finally {
                         pp.giveBack(sp2);
@@ -153,20 +159,17 @@ public class AtomizeHelper {
         pp.giveBack(tempTVP2);
     }
 
-    public static void buildStringConcatenation(SequencePointable sp, PointablePool pp,
-            ArrayBackedValueStorage tempABVS, NodeTreePointable ntp) throws IOException {
+    public void buildStringConcatenation(SequencePointable sp, PointablePool pp, ArrayBackedValueStorage tempABVS,
+            NodeTreePointable ntp) throws IOException {
         tempABVS.reset();
         DataOutput out = tempABVS.getDataOutput();
         out.write(ValueTag.XS_UNTYPED_ATOMIC_TAG);
+        ga.reset();
+        sb.reset(ga, STRING_EXPECTED_LENGTH);
         // Leave room for the utf-8 length
-        out.write(0);
-        out.write(0);
-        buildConcatenationRec(sp, pp, out, ntp);
-        int utflen = tempABVS.getLength() - 3;
-        byte[] bytes = tempABVS.getByteArray();
-        // Patch utf-8 length at bytes 1 and 2
-        bytes[1] = (byte) ((utflen >>> 8) & 0xFF);
-        bytes[2] = (byte) ((utflen >>> 0) & 0xFF);
+        buildConcatenationRec(sp, pp, sb, ntp);
+        sb.finish();
+        out.write(ga.getByteArray(), 0, ga.getLength());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
index 49e1271..7c3197a 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
@@ -25,17 +25,18 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
 import java.util.List;
 
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.data.std.primitive.DoublePointable;
 import org.apache.hyracks.data.std.primitive.LongPointable;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
 import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
 import org.apache.vxquery.context.DynamicContext;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
@@ -486,7 +487,7 @@ public class FunctionHelper {
 
     public static boolean compareTaggedValues(AbstractValueComparisonOperation aOp, TaggedValuePointable tvp1,
             TaggedValuePointable tvp2, DynamicContext dCtx, TypedPointables tp1, TypedPointables tp2)
-                    throws SystemException {
+            throws SystemException {
         int tid1 = getBaseTypeForComparisons(tvp1.getTag());
         int tid2 = getBaseTypeForComparisons(tvp2.getTag());
 
@@ -1137,13 +1138,6 @@ public class FunctionHelper {
         return max;
     }
 
-    public static String getStringFromPointable(UTF8StringPointable stringp, ByteBufferInputStream bbis,
-            DataInputStream di) throws IOException {
-        bbis.setByteBuffer(ByteBuffer.wrap(Arrays.copyOfRange(stringp.getByteArray(), stringp.getStartOffset(),
-                stringp.getLength() + stringp.getStartOffset())), 0);
-        return di.readUTF();
-    }
-
     public static long getTimezone(ITimezone timezonep) {
         return timezonep.getTimezoneHour() * DateTime.CHRONON_OF_HOUR
                 + timezonep.getTimezoneMinute() * DateTime.CHRONON_OF_MINUTE;
@@ -1212,7 +1206,7 @@ public class FunctionHelper {
     }
 
     public static void printUTF8String(UTF8StringPointable stringp) {
-        System.err.println(" printUTF8String START length = " + stringp.getUTFLength());
+        System.err.println(" printUTF8String START length = " + stringp.getUTF8Length());
         ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
         charIterator.reset();
         for (int c = charIterator.next(); c != ICharacterIterator.EOS_CHAR; c = charIterator.next()) {
@@ -1223,8 +1217,7 @@ public class FunctionHelper {
 
     public static void readInDocFromPointable(UTF8StringPointable stringp, ByteBufferInputStream bbis,
             DataInputStream di, ArrayBackedValueStorage abvs, IParser parser) throws IOException {
-        String fName = getStringFromPointable(stringp, bbis, di);
-        readInDocFromString(fName, bbis, di, abvs, parser);
+        readInDocFromString(stringp.toString(), bbis, di, abvs, parser);
     }
 
     public static void readInDocFromString(String fName, ByteBufferInputStream bbis, DataInputStream di,
@@ -1262,7 +1255,7 @@ public class FunctionHelper {
 
     public static boolean transformThenCompareMinMaxTaggedValues(AbstractValueComparisonOperation aOp,
             TaggedValuePointable tvp1, TaggedValuePointable tvp2, DynamicContext dCtx, TypedPointables tp1,
-            TypedPointables tp2) throws SystemException {
+            TypedPointables tp2) throws HyracksDataException {
         TaggedValuePointable tvp1new = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
         TaggedValuePointable tvp2new = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
 
@@ -1308,46 +1301,61 @@ public class FunctionHelper {
         }
     }
 
-    public static void writeChar(char c, DataOutput dOut) {
-        try {
-            if ((c >= 0x0001) && (c <= 0x007F)) {
-                dOut.write((byte) c);
-            } else if (c > 0x07FF) {
-                dOut.write((byte) (0xE0 | ((c >> 12) & 0x0F)));
-                dOut.write((byte) (0x80 | ((c >> 6) & 0x3F)));
-                dOut.write((byte) (0x80 | ((c >> 0) & 0x3F)));
-            } else {
-                dOut.write((byte) (0xC0 | ((c >> 6) & 0x1F)));
-                dOut.write((byte) (0x80 | ((c >> 0) & 0x3F)));
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
+    public static void writeChar(char c, UTF8StringBuilder sb) throws IOException {
+        sb.appendChar(c);
+    }
+
+    public static void stringToGrowableArray(String value, GrowableArray ga, UTF8StringBuilder sb, int expectedLength)
+            throws IOException {
+        ga.reset();
+        sb.reset(ga, expectedLength);
+        sb.appendString(value);
+        sb.finish();
+    }
+
+    public static void charSequenceToGrowableArray(CharSequence charSequence, GrowableArray ga, UTF8StringBuilder sb,
+            int expectedLength) throws IOException {
+        ga.reset();
+        sb.reset(ga, expectedLength);
+        for (int i = 0; i < charSequence.length(); ++i) {
+            sb.appendChar(charSequence.charAt(i));
+        }
+        sb.finish();
+    }
+
+    public static void charArrayToGrowableArray(char[] ch, int start, int length, GrowableArray ga,
+            UTF8StringBuilder sb, int expectedLength) throws IOException {
+        ga.reset();
+        sb.reset(ga, expectedLength);
+        for (int i = start; i < start + length; ++i) {
+            sb.appendChar(ch[i]);
         }
+        sb.finish();
     }
 
-    public static void writeCharSequence(CharSequence charSequence, DataOutput dOut) {
+    public static void writeCharSequence(CharSequence charSequence, UTF8StringBuilder sb) throws IOException {
         for (int i = 0; i < charSequence.length(); ++i) {
-            writeChar(charSequence.charAt(i), dOut);
+            sb.appendChar(charSequence.charAt(i));
         }
     }
 
-    public static void writeCharArray(char[] ch, int start, int length, DataOutput dOut) {
+    public static void writeCharArray(char[] ch, int start, int length, UTF8StringBuilder sb) throws IOException {
         for (int i = start; i < start + length; ++i) {
-            writeChar(ch[i], dOut);
+            sb.appendChar(ch[i]);
         }
     }
 
-    public static void writeDateAsString(IDate date, DataOutput dOut) {
+    public static void writeDateAsString(IDate date, UTF8StringBuilder sb) throws IOException {
         // Year
-        writeNumberWithPadding(date.getYear(), 4, dOut);
-        writeChar('-', dOut);
+        writeNumberWithPadding(date.getYear(), 4, sb);
+        sb.appendChar('-');
 
         // Month
-        writeNumberWithPadding(date.getMonth(), 2, dOut);
-        writeChar('-', dOut);
+        writeNumberWithPadding(date.getMonth(), 2, sb);
+        sb.appendChar('-');
 
         // Day
-        writeNumberWithPadding(date.getDay(), 2, dOut);
+        writeNumberWithPadding(date.getDay(), 2, sb);
     }
 
     /**
@@ -1359,66 +1367,66 @@ public class FunctionHelper {
      *            padding
      * @param dOut
      *            data output
+     * @throws IOException
      */
-
-    public static void writeNumberWithPadding(long valueArg, int paddingArg, DataOutput dOut) {
+    public static void writeNumberWithPadding(long valueArg, int paddingArg, UTF8StringBuilder sb) throws IOException {
         long value = valueArg;
         int padding = paddingArg;
         if (value < 0) {
-            writeChar('-', dOut);
+            sb.appendChar('-');
             value = Math.abs(value);
         }
         int nDigits = getNumberOfDigits(value);
 
         // Add zero padding for set length numbers.
         while (padding > nDigits) {
-            writeChar('0', dOut);
+            sb.appendChar('0');
             --padding;
         }
 
         // Write the actual number.
         long pow10 = (long) Math.pow(10, nDigits - 1.0);
         for (int i = nDigits - 1; i >= 0; --i) {
-            writeChar((char) ('0' + (value / pow10)), dOut);
+            sb.appendChar((char) ('0' + (value / pow10)));
             value %= pow10;
             pow10 /= 10;
         }
     }
 
-    public static void writeTimeAsString(ITime time, DataOutput dOut) {
+    public static void writeTimeAsString(ITime time, UTF8StringBuilder sb) throws IOException {
         // Hours
-        writeNumberWithPadding(time.getHour(), 2, dOut);
-        writeChar(':', dOut);
+        writeNumberWithPadding(time.getHour(), 2, sb);
+        sb.appendChar(':');
 
         // Minute
-        writeNumberWithPadding(time.getMinute(), 2, dOut);
-        writeChar(':', dOut);
+        writeNumberWithPadding(time.getMinute(), 2, sb);
+        sb.appendChar(':');
 
         // Milliseconds
-        writeNumberWithPadding(time.getMilliSecond() / DateTime.CHRONON_OF_SECOND, 2, dOut);
+        writeNumberWithPadding(time.getMilliSecond() / DateTime.CHRONON_OF_SECOND, 2, sb);
         if (time.getMilliSecond() % DateTime.CHRONON_OF_SECOND != 0) {
-            writeChar('.', dOut);
-            writeNumberWithPadding(time.getMilliSecond() % DateTime.CHRONON_OF_SECOND, 3, dOut);
+            sb.appendChar('.');
+            writeNumberWithPadding(time.getMilliSecond() % DateTime.CHRONON_OF_SECOND, 3, sb);
         }
     }
 
-    public static void writeTimezoneAsString(ITimezone timezone, DataOutput dOut) {
+    public static void writeTimezoneAsString(ITimezone timezone, UTF8StringBuilder sb) throws IOException {
         long timezoneHour = timezone.getTimezoneHour();
         long timezoneMinute = timezone.getTimezoneMinute();
         if (timezoneHour != DateTime.TIMEZONE_HOUR_NULL && timezoneMinute != DateTime.TIMEZONE_MINUTE_NULL) {
             if (timezoneHour == 0 && timezoneMinute == 0) {
-                writeChar('Z', dOut);
+                sb.appendChar('Z');
             } else {
                 if (timezoneHour >= 0 && timezoneMinute >= 0) {
-                    writeChar('+', dOut);
+                    sb.appendChar('+');
                 } else {
-                    writeChar('-', dOut);
+                    sb.appendChar('-');
                     timezoneHour = Math.abs(timezoneHour);
                     timezoneMinute = Math.abs(timezoneMinute);
                 }
-                writeNumberWithPadding(timezoneHour, 2, dOut);
-                writeChar(':', dOut);
-                writeNumberWithPadding(timezoneMinute, 2, dOut);
+                writeNumberWithPadding(timezoneHour, 2, sb);
+                sb.appendChar(':');
+                writeNumberWithPadding(timezoneMinute, 2, sb);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java b/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
index 984ab81..6e20ba1 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
@@ -20,6 +20,18 @@ import java.io.DataOutput;
 import java.io.IOException;
 import java.io.PrintStream;
 
+import org.apache.hyracks.algebricks.data.IPrinter;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.hyracks.data.std.primitive.BytePointable;
+import org.apache.hyracks.data.std.primitive.DoublePointable;
+import org.apache.hyracks.data.std.primitive.FloatPointable;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.primitive.ShortPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.vxquery.datamodel.accessors.PointablePool;
 import org.apache.vxquery.datamodel.accessors.PointablePoolFactory;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
@@ -44,19 +56,6 @@ import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.cast.CastToStringOperation;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.data.IPrinter;
-import org.apache.hyracks.data.std.primitive.BooleanPointable;
-import org.apache.hyracks.data.std.primitive.BytePointable;
-import org.apache.hyracks.data.std.primitive.DoublePointable;
-import org.apache.hyracks.data.std.primitive.FloatPointable;
-import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.data.std.primitive.ShortPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.primitive.VoidPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
 public class XMLSerializer implements IPrinter {
     private final PointablePool pp;
 
@@ -873,8 +872,8 @@ public class XMLSerializer implements IPrinter {
     }
 
     private void printString(PrintStream ps, UTF8StringPointable utf8sp) {
-        int utfLen = utf8sp.getUTFLength();
-        int offset = 2;
+        int utfLen = utf8sp.getUTF8Length();
+        int offset = utf8sp.getMetaDataLength();
         while (utfLen > 0) {
             char c = utf8sp.charAt(offset);
             switch (c) {
@@ -902,7 +901,7 @@ public class XMLSerializer implements IPrinter {
                     ps.append(c);
                     break;
             }
-            int cLen = UTF8StringPointable.getModifiedUTF8Len(c);
+            int cLen = utf8sp.charSize(offset);
             offset += cLen;
             utfLen -= cLen;
         }
@@ -941,7 +940,7 @@ public class XMLSerializer implements IPrinter {
     }
 
     @Override
-    public void init() throws AlgebricksException {
+    public void init() throws HyracksDataException {
 
     }
 }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java b/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java
index fde6e07..a4b31bd 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/NameTest.java
@@ -19,7 +19,7 @@ package org.apache.vxquery.types;
 import java.io.Serializable;
 import java.util.Arrays;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public final class NameTest implements Serializable {
     private static final long serialVersionUID = 1L;
@@ -49,13 +49,13 @@ public final class NameTest implements Serializable {
         StringBuilder buffer = new StringBuilder();
         buffer.append("NameTest({");
         if (uri != null) {
-            UTF8StringPointable.toString(buffer, uri, 0);
+            UTF8StringUtil.toString(buffer, uri, 0);
         } else {
             buffer.append('*');
         }
         buffer.append('}');
         if (localName != null) {
-            UTF8StringPointable.toString(buffer, localName, 0);
+            UTF8StringUtil.toString(buffer, localName, 0);
         } else {
             buffer.append('*');
         }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java b/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
index c445ba7..d29242e 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/types/ProcessingInstructionType.java
@@ -18,7 +18,7 @@ package org.apache.vxquery.types;
 
 import java.util.Arrays;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public final class ProcessingInstructionType extends AbstractNodeType {
     private static final long serialVersionUID = 1L;
@@ -44,7 +44,7 @@ public final class ProcessingInstructionType extends AbstractNodeType {
     public String toString() {
         StringBuilder sb = new StringBuilder("processing-instruction(");
         if (target != null) {
-            UTF8StringPointable.toString(sb, target, 0);
+            UTF8StringUtil.toString(sb, target, 0);
         }
         return sb.append(")").toString();
     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
index 846c27b..84c8ddf 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
@@ -22,12 +22,13 @@ import java.util.List;
 import org.apache.hyracks.api.comm.IFrameFieldAppender;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.accessors.nodes.NodeTreePointable;
-import org.apache.vxquery.datamodel.builders.atomic.UTF8StringBuilder;
 import org.apache.vxquery.datamodel.builders.nodes.AbstractNodeBuilder;
 import org.apache.vxquery.datamodel.builders.nodes.AttributeNodeBuilder;
 import org.apache.vxquery.datamodel.builders.nodes.CommentNodeBuilder;
@@ -37,6 +38,7 @@ import org.apache.vxquery.datamodel.builders.nodes.ElementNodeBuilder;
 import org.apache.vxquery.datamodel.builders.nodes.PINodeBuilder;
 import org.apache.vxquery.datamodel.builders.nodes.TextNodeBuilder;
 import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 import org.apache.vxquery.types.BuiltinTypeQNames;
 import org.apache.vxquery.types.ElementType;
 import org.apache.vxquery.types.NameTest;
@@ -50,6 +52,8 @@ import org.xml.sax.SAXException;
 import org.xml.sax.ext.LexicalHandler;
 
 public class SAXContentHandler implements ContentHandler, LexicalHandler {
+    private static final int STRING_EXPECTED_LENGTH = 300;
+
     // XML node builders
     protected final AttributeNodeBuilder anb;
     protected final CommentNodeBuilder cnb;
@@ -58,6 +62,7 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
     protected final PINodeBuilder pinb;
     protected final TextNodeBuilder tnb;
     protected final UTF8StringBuilder utf8b;
+    private final UTF8StringBuilder utf8bInternal;
     protected final List<ElementNodeBuilder> enbStack;
     protected final List<ElementNodeBuilder> freeENBList;
     protected boolean isIndexHandler;
@@ -83,7 +88,8 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
     protected int nodeIdCounter;
     protected final ITreeNodeIdProvider nodeIdProvider;
     protected final ArrayBackedValueStorage tempABVS;
-    private final ArrayBackedValueStorage textABVS;
+    private final GrowableArray textGA;
+    private final GrowableArray textGAInternal;
 
     public SAXContentHandler(boolean attachTypes, ITreeNodeIdProvider nodeIdProvider, boolean isIndexHandler) {
         // XML node builders
@@ -94,8 +100,9 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
         pinb = new PINodeBuilder();
         tnb = new TextNodeBuilder();
         utf8b = new UTF8StringBuilder();
-        enbStack = new ArrayList<ElementNodeBuilder>();
-        freeENBList = new ArrayList<ElementNodeBuilder>();
+        utf8bInternal = new UTF8StringBuilder();
+        enbStack = new ArrayList<>();
+        freeENBList = new ArrayList<>();
 
         // Element writing and path step variables
         skipping = true;
@@ -110,7 +117,8 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
         nodeIdCounter = 0;
         this.nodeIdProvider = nodeIdProvider;
         tempABVS = new ArrayBackedValueStorage();
-        textABVS = new ArrayBackedValueStorage();
+        textGA = new GrowableArray();
+        textGAInternal = new GrowableArray();
         this.isIndexHandler = isIndexHandler;
         if (isIndexHandler) {
             this.appender = null;
@@ -156,7 +164,7 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
             return;
         }
         try {
-            utf8b.appendCharArray(ch, start, length);
+            appendCharArray(ch, start, length);
         } catch (IOException e) {
             e.printStackTrace();
             throw new SAXException(e);
@@ -233,15 +241,11 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
         try {
             flushText();
             startChildInParent(pinb);
-            tempABVS.reset();
-            tempABVS.getDataOutput().writeUTF(target);
             if (createNodeIds) {
                 pinb.setLocalNodeId(nodeIdCounter++);
             }
-            pinb.setTarget(tempABVS);
-            tempABVS.reset();
-            tempABVS.getDataOutput().writeUTF(data);
-            pinb.setContent(tempABVS);
+            pinb.setTarget(stringToGrowableArray(target));
+            pinb.setContent(stringToGrowableArray(data));
             endChildInParent(pinb);
         } catch (IOException e) {
             e.printStackTrace();
@@ -249,6 +253,11 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
         }
     }
 
+    private GrowableArray stringToGrowableArray(String value) throws IOException {
+        FunctionHelper.stringToGrowableArray(value, textGAInternal, utf8bInternal, STRING_EXPECTED_LENGTH);
+        return textGAInternal;
+    }
+
     @Override
     public void setDocumentLocator(Locator locator) {
     }
@@ -264,8 +273,8 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
         }
         db.reset();
         try {
-            textABVS.reset();
-            utf8b.reset(textABVS);
+            textGA.reset();
+            utf8b.reset(textGA, STRING_EXPECTED_LENGTH);
         } catch (IOException e) {
             throw new SAXException(e);
         }
@@ -355,7 +364,8 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
                 tempABVS.reset();
                 DataOutput tempOut = tempABVS.getDataOutput();
                 tempOut.write(ValueTag.XS_UNTYPED_ATOMIC_TAG);
-                tempOut.writeUTF(aValue);
+                stringToGrowableArray(aValue);
+                tempOut.write(textGAInternal.getByteArray(), 0, textGAInternal.getLength());
                 enb.startAttribute(anb);
                 anb.setName(aUriCode, aLocalNameCode, aPrefixCode);
                 if (attachTypes) {
@@ -394,18 +404,24 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
             if (createNodeIds) {
                 cnb.setLocalNodeId(nodeIdCounter++);
             }
-            utf8b.appendCharArray(ch, start, length);
+            appendCharArray(ch, start, length);
             utf8b.finish();
-            cnb.setValue(textABVS);
+            cnb.setValue(textGA);
             endChildInParent(cnb);
-            textABVS.reset();
-            utf8b.reset(textABVS);
+            textGA.reset();
+            utf8b.reset(textGA, STRING_EXPECTED_LENGTH);
         } catch (IOException e) {
             e.printStackTrace();
             throw new SAXException(e);
         }
     }
 
+    private void appendCharArray(char[] ch, int start, int length) throws IOException {
+        for (int i = 0; i < length; ++i) {
+            utf8b.appendChar(ch[i + start]);
+        }
+    }
+
     protected void flushText() throws IOException {
         if (pendingText) {
             peekENBStackTop().startChild(tnb);
@@ -413,10 +429,10 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
                 tnb.setLocalNodeId(nodeIdCounter++);
             }
             utf8b.finish();
-            tnb.setValue(textABVS);
+            tnb.setValue(textGA);
             peekENBStackTop().endChild(tnb);
-            textABVS.reset();
-            utf8b.reset(textABVS);
+            textGA.reset();
+            utf8b.reset(textGA, STRING_EXPECTED_LENGTH);
             pendingText = false;
         }
     }
@@ -559,7 +575,7 @@ public class SAXContentHandler implements ContentHandler, LexicalHandler {
             return null;
         }
         StringBuilder sb = new StringBuilder();
-        UTF8StringPointable.toString(sb, bytes, 0);
+        UTF8StringUtil.toString(sb, bytes, 0);
         return sb.toString();
     }
 

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
index 2f9f8c5..a830b47 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
@@ -80,8 +80,7 @@ public class XMLParser implements IParser {
             handler.writeDocument(abvs);
             input.close();
         } catch (Exception e) {
-            HyracksDataException hde = new HyracksDataException(e);
-            hde.setNodeId(nodeId);
+            HyracksDataException hde = new HyracksDataException(e, nodeId);
             throw hde;
         }
         return 0;
@@ -100,16 +99,13 @@ public class XMLParser implements IParser {
             parser.parse(in);
             input.close();
         } catch (FileNotFoundException e) {
-            HyracksDataException hde = new VXQueryFileNotFoundException(e, file);
-            hde.setNodeId(nodeId);
+            HyracksDataException hde = new VXQueryFileNotFoundException(e, file, nodeId);
             throw hde;
         } catch (SAXException e) {
-            HyracksDataException hde = new VXQueryParseException(e, file);
-            hde.setNodeId(nodeId);
+            HyracksDataException hde = new VXQueryParseException(e, file, nodeId);
             throw hde;
         } catch (IOException e) {
-            HyracksDataException hde = new HyracksDataException(e);
-            hde.setNodeId(nodeId);
+            HyracksDataException hde = new HyracksDataException(e, nodeId);
             throw hde;
         }
     }
@@ -128,8 +124,7 @@ public class XMLParser implements IParser {
             parser.parse(in);
             input.close();
         } catch (Exception e) {
-            HyracksDataException hde = new HyracksDataException(e);
-            hde.setNodeId(nodeId);
+            HyracksDataException hde = new HyracksDataException(e, nodeId);
             throw hde;
         }
     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryCompilationListener.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryCompilationListener.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryCompilationListener.java
index b3692b1..8690c94 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryCompilationListener.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/VXQueryCompilationListener.java
@@ -14,18 +14,19 @@
  */
 package org.apache.vxquery.xmlquery.query;
 
-import org.apache.vxquery.compiler.algebricks.prettyprint.VXQueryLogicalExpressionPrettyPrintVisitor;
-import org.apache.vxquery.xmlquery.ast.ModuleNode;
-import org.json.JSONException;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
+import java.io.IOException;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.AlgebricksAppendable;
 import org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
 import org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
 import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.vxquery.compiler.algebricks.prettyprint.VXQueryLogicalExpressionPrettyPrintVisitor;
+import org.apache.vxquery.xmlquery.ast.ModuleNode;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
 
 public class VXQueryCompilationListener implements XQueryCompilationListener {
     boolean showTET, showRP, showOET, showAST;
@@ -39,7 +40,7 @@ public class VXQueryCompilationListener implements XQueryCompilationListener {
 
     /**
      * Outputs the query inputs, outputs and user constraints for each module as result of code generation.
-     * 
+     *
      * @param module
      */
     public void notifyCodegenResult(Module module) {
@@ -47,8 +48,8 @@ public class VXQueryCompilationListener implements XQueryCompilationListener {
             JobSpecification jobSpec = module.getHyracksJobSpecification();
             try {
                 System.err.println("***Runtime Plan: ");
-                System.err.println(jobSpec.toJSON().toString(2));
-            } catch (JSONException e) {
+                System.err.println(jobSpec.toJSON().toString());
+            } catch (IOException e) {
                 e.printStackTrace();
                 System.err.println(jobSpec.toString());
             }
@@ -58,7 +59,7 @@ public class VXQueryCompilationListener implements XQueryCompilationListener {
     /**
      * Outputs the syntax translation tree for the module in the format: "-- logical operator(if exists) | execution mode |"
      * where execution mode can be one of: UNPARTITIONED,PARTITIONED,LOCAL
-     * 
+     *
      * @param module
      */
     @Override
@@ -76,7 +77,7 @@ public class VXQueryCompilationListener implements XQueryCompilationListener {
     /**
      * Outputs the optimized expression tree for the module in the format:
      * "-- logical operator(if exists) | execution mode |" where execution mode can be one of: UNPARTITIONED,PARTITIONED,LOCAL
-     * 
+     *
      * @param module
      */
     @Override
@@ -90,7 +91,7 @@ public class VXQueryCompilationListener implements XQueryCompilationListener {
     /**
      * Outputs the abstract syntax tree obtained from parsing by serializing the DomDriver object to a pretty-printed XML
      * String.
-     * 
+     *
      * @param moduleNode
      */
     @Override
@@ -105,8 +106,10 @@ public class VXQueryCompilationListener implements XQueryCompilationListener {
         try {
             ILogicalExpressionVisitor<String, Integer> ev = new VXQueryLogicalExpressionPrettyPrintVisitor(
                     module.getModuleContext());
-            LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor(ev);
-            PlanPrettyPrinter.printPlan(module.getBody(), sb, v, 0);
+            AlgebricksAppendable buffer = new AlgebricksAppendable();
+            LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor(buffer, ev);
+            PlanPrettyPrinter.printPlan(module.getBody(), v, 0);
+            sb.append(buffer.toString());
         } catch (AlgebricksException e) {
             e.printStackTrace();
         }