Moved the TypedPointables object improve memory management.

Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/79ad8733
Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/79ad8733
Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/79ad8733

Branch: refs/heads/site
Commit: 79ad8733bfa13dd7e651b9e5285001b4070e8ee1
Parents: b5ce0a2
Author: Preston Carman <[email protected]>
Authored: Tue Jun 17 16:10:18 2014 -0700
Committer: Preston Carman <[email protected]>
Committed: Tue Jun 17 16:10:18 2014 -0700

----------------------------------------------------------------------
 ...AbstractMaxMinAggregateEvaluatorFactory.java |  5 +++-
 .../AbstractMaxMinScalarEvaluatorFactory.java   |  5 +++-
 .../AvgGlobalAggregateEvaluatorFactory.java     | 11 ++++---
 .../AvgLocalAggregateEvaluatorFactory.java      |  7 +++--
 .../FnAvgAggregateEvaluatorFactory.java         |  7 +++--
 .../aggregate/FnAvgScalarEvaluatorFactory.java  |  7 +++--
 .../FnSumAggregateEvaluatorFactory.java         |  5 +++-
 .../aggregate/FnSumScalarEvaluatorFactory.java  |  5 +++-
 ...bstractArithmeticScalarEvaluatorFactory.java |  5 +++-
 ...ctValueComparisonScalarEvaluatorFactory.java |  4 +--
 ...GeneralComparisonScalarEvaluatorFactory.java |  4 +--
 .../node/IdFromNodeScalarEvaluatorFactory.java  |  4 ++-
 .../LocalIdFromNodeScalarEvaluatorFactory.java  |  4 ++-
 .../AbstractNumericScalarEvaluatorFactory.java  |  2 +-
 ...tractNumericUnaryScalarEvaluatorFactory.java |  2 +-
 .../runtime/functions/util/FunctionHelper.java  | 31 ++++++++------------
 16 files changed, 67 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java
index 4943c9b..1278e63 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinAggregateEvaluatorFactory.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
 import org.apache.vxquery.exceptions.ErrorCode;
@@ -49,6 +50,8 @@ public abstract class AbstractMaxMinAggregateEvaluatorFactory 
extends
         final AbstractValueComparisonOperation aOp = 
createValueComparisonOperation();
         final TaggedValuePointable tvp2 = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
         final SequencePointable seqp = (SequencePointable) 
SequencePointable.FACTORY.createPointable();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final DataOutput dOut = abvs.getDataOutput();
@@ -89,7 +92,7 @@ public abstract class AbstractMaxMinAggregateEvaluatorFactory 
extends
                     if (count != 0) {
                         tvp2.set(abvs.getByteArray(), abvs.getStartOffset(), 
abvs.getLength());
                     }
-                    if (count == 0 || 
FunctionHelper.transformThenCompareMinMaxTaggedValues(aOp, tvp1, tvp2, dCtx)) {
+                    if (count == 0 || 
FunctionHelper.transformThenCompareMinMaxTaggedValues(aOp, tvp1, tvp2, dCtx, 
tp1, tp2)) {
                         try {
                             abvs.reset();
                             dOut.write(tvp1.getByteArray(), 
tvp1.getStartOffset(), tvp1.getLength());

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinScalarEvaluatorFactory.java
index bf35f7e..5f91cd9 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AbstractMaxMinScalarEvaluatorFactory.java
@@ -19,6 +19,7 @@ package org.apache.vxquery.runtime.functions.aggregate;
 import org.apache.vxquery.context.DynamicContext;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
 import org.apache.vxquery.exceptions.SystemException;
@@ -50,6 +51,8 @@ public abstract class AbstractMaxMinScalarEvaluatorFactory 
extends AbstractTagge
         final TaggedValuePointable tvpReturn = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
         final TaggedValuePointable tvpNext = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
         final VoidPointable p = (VoidPointable) 
VoidPointable.FACTORY.createPointable();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -69,7 +72,7 @@ public abstract class AbstractMaxMinScalarEvaluatorFactory 
extends AbstractTagge
                                 // Init.
                                 tvpReturn.set(tvpNext);
                             }
-                            if 
(FunctionHelper.transformThenCompareMinMaxTaggedValues(aOp, tvpNext, tvpReturn, 
dCtx)) {
+                            if 
(FunctionHelper.transformThenCompareMinMaxTaggedValues(aOp, tvpNext, tvpReturn, 
dCtx, tp1, tp2)) {
                                 tvpReturn.set(tvpNext);
                             }
                         }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java
index f674997..f784a13 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgGlobalAggregateEvaluatorFactory.java
@@ -20,6 +20,7 @@ import java.io.DataOutput;
 
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
 import org.apache.vxquery.exceptions.ErrorCode;
@@ -56,7 +57,9 @@ public class AvgGlobalAggregateEvaluatorFactory extends 
AbstractTaggedValueArgum
         final LongPointable longp = (LongPointable) 
LongPointable.FACTORY.createPointable();
         final SequencePointable seq = (SequencePointable) 
SequencePointable.FACTORY.createPointable();
         final TaggedValuePointable tvpArg = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
-
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
+        
         return new AbstractTaggedValueArgumentAggregateEvaluator(args) {
             TaggedValuePointable tvpSum = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
             TaggedValuePointable tvpCount = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
@@ -90,7 +93,7 @@ public class AvgGlobalAggregateEvaluatorFactory extends 
AbstractTaggedValueArgum
                 } else {
                     // Set count as a TaggedValuePointable.
                     try {
-                        FunctionHelper.arithmeticOperation(aOpDivide, dCtx, 
tvpSum, tvpCount, tvpSum);
+                        FunctionHelper.arithmeticOperation(aOpDivide, dCtx, 
tvpSum, tvpCount, tvpSum, tp1, tp2);
                         result.set(tvpSum);
                     } catch (Exception e) {
                         throw new AlgebricksException(e);
@@ -109,9 +112,9 @@ public class AvgGlobalAggregateEvaluatorFactory extends 
AbstractTaggedValueArgum
                         return;
                     } else if (seqLen == 2) {
                         seq.getEntry(0, tvpArg);
-                        FunctionHelper.arithmeticOperation(aOp, dCtx, tvpArg, 
tvpCount, tvpCount);
+                        FunctionHelper.arithmeticOperation(aOp, dCtx, tvpArg, 
tvpCount, tvpCount, tp1, tp2);
                         seq.getEntry(1, tvpArg);
-                        FunctionHelper.arithmeticOperation(aOp, dCtx, tvpArg, 
tvpSum, tvpSum);
+                        FunctionHelper.arithmeticOperation(aOp, dCtx, tvpArg, 
tvpSum, tvpSum, tp1, tp2);
                     } else {
                         throw new SystemException(ErrorCode.SYSE0001);
                     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java
index baebb29..e325165 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/AvgLocalAggregateEvaluatorFactory.java
@@ -19,6 +19,7 @@ package org.apache.vxquery.runtime.functions.aggregate;
 import java.io.DataOutput;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
@@ -52,7 +53,9 @@ public class AvgLocalAggregateEvaluatorFactory extends 
AbstractTaggedValueArgume
         final ArrayBackedValueStorage abvsSeq = new ArrayBackedValueStorage();
         final SequenceBuilder sb = new SequenceBuilder();
         final AddOperation aOp = new AddOperation();
-
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
+        
         return new AbstractTaggedValueArgumentAggregateEvaluator(args) {
             long count;
             TaggedValuePointable tvpSum = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
@@ -103,7 +106,7 @@ public class AvgLocalAggregateEvaluatorFactory extends 
AbstractTaggedValueArgume
             @Override
             protected void step(TaggedValuePointable[] args) throws 
SystemException {
                 TaggedValuePointable tvp = args[0];
-                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, 
tvpSum);
+                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, 
tvpSum, tp1, tp2);
                 count++;
             }
         };

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java
index c3fc544..e1e6204 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgAggregateEvaluatorFactory.java
@@ -20,6 +20,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
 import org.apache.vxquery.exceptions.ErrorCode;
@@ -53,6 +54,8 @@ public class FnAvgAggregateEvaluatorFactory extends 
AbstractTaggedValueArgumentA
         final DataOutput dOutCount = abvsCount.getDataOutput();
         final AddOperation aOp = new AddOperation();
         final DivideOperation aOpDivide = new DivideOperation();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         return new AbstractTaggedValueArgumentAggregateEvaluator(args) {
             long count;
@@ -80,7 +83,7 @@ public class FnAvgAggregateEvaluatorFactory extends 
AbstractTaggedValueArgumentA
                         dOutCount.writeLong(count);
                         tvpCount.set(abvsCount);
 
-                        FunctionHelper.arithmeticOperation(aOpDivide, dCtx, 
tvpSum, tvpCount, tvpSum);
+                        FunctionHelper.arithmeticOperation(aOpDivide, dCtx, 
tvpSum, tvpCount, tvpSum, tp1, tp2);
                         result.set(tvpSum);
                     } catch (Exception e) {
                         throw new AlgebricksException(e);
@@ -101,7 +104,7 @@ public class FnAvgAggregateEvaluatorFactory extends 
AbstractTaggedValueArgumentA
                         throw new SystemException(ErrorCode.SYSE0001, 
e.toString());
                     }
                 } else {
-                    FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, 
tvpSum);
+                    FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, 
tvpSum, new TypedPointables(), new TypedPointables());
                 }
                 count++;
             }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgScalarEvaluatorFactory.java
index 7ee822c..e02f4e2 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnAvgScalarEvaluatorFactory.java
@@ -21,6 +21,7 @@ import java.io.DataOutput;
 import org.apache.vxquery.context.DynamicContext;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
 import org.apache.vxquery.exceptions.ErrorCode;
@@ -57,6 +58,8 @@ public class FnAvgScalarEvaluatorFactory extends 
AbstractTaggedValueArgumentScal
         final DataOutput dOut = abvs.getDataOutput();
         final AddOperation aOp = new AddOperation();
         final DivideOperation aOpDivide = new DivideOperation();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -75,7 +78,7 @@ public class FnAvgScalarEvaluatorFactory extends 
AbstractTaggedValueArgumentScal
                                 // Init.
                                 tvpSum.set(tvpNext);
                             } else {
-                                FunctionHelper.arithmeticOperation(aOp, dCtx, 
tvpNext, tvpSum, tvpSum);
+                                FunctionHelper.arithmeticOperation(aOp, dCtx, 
tvpNext, tvpSum, tvpSum, tp1, tp2);
                             }
                         }
 
@@ -89,7 +92,7 @@ public class FnAvgScalarEvaluatorFactory extends 
AbstractTaggedValueArgumentScal
                             throw new SystemException(ErrorCode.SYSE0001, e);
                         }
 
-                        FunctionHelper.arithmeticOperation(aOpDivide, dCtx, 
tvpSum, tvpCount, tvpSum);
+                        FunctionHelper.arithmeticOperation(aOpDivide, dCtx, 
tvpSum, tvpCount, tvpSum, tp1, tp2);
                         result.set(tvpSum);
                     }
                 } else {

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java
index 4049709..c9057ba 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumAggregateEvaluatorFactory.java
@@ -20,6 +20,7 @@ import java.io.DataOutput;
 import java.io.IOException;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.arithmetic.AddOperation;
@@ -46,6 +47,8 @@ public class FnSumAggregateEvaluatorFactory extends 
AbstractTaggedValueArgumentA
         final ArrayBackedValueStorage abvsSum = new ArrayBackedValueStorage();
         final DataOutput dOutSum = abvsSum.getDataOutput();
         final AddOperation aOp = new AddOperation();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         return new AbstractTaggedValueArgumentAggregateEvaluator(args) {
             TaggedValuePointable tvpSum = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
@@ -77,7 +80,7 @@ public class FnSumAggregateEvaluatorFactory extends 
AbstractTaggedValueArgumentA
             @Override
             protected void step(TaggedValuePointable[] args) throws 
SystemException {
                 TaggedValuePointable tvp = args[0];
-                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, 
tvpSum);
+                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, 
tvpSum, tp1, tp2);
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumScalarEvaluatorFactory.java
index 7ad1b0f..0c82710 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/aggregate/FnSumScalarEvaluatorFactory.java
@@ -21,6 +21,7 @@ import java.io.DataOutput;
 import org.apache.vxquery.context.DynamicContext;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
@@ -55,6 +56,8 @@ public class FnSumScalarEvaluatorFactory extends 
AbstractTaggedValueArgumentScal
         final TaggedValuePointable tvpSum = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
         final VoidPointable p = (VoidPointable) 
VoidPointable.FACTORY.createPointable();
         final AddOperation aOp = new AddOperation();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -88,7 +91,7 @@ public class FnSumScalarEvaluatorFactory extends 
AbstractTaggedValueArgumentScal
                                 // Init.
                                 tvpSum.set(tvpNext);
                             } else {
-                                FunctionHelper.arithmeticOperation(aOp, dCtx, 
tvpNext, tvpSum, tvpSum);
+                                FunctionHelper.arithmeticOperation(aOp, dCtx, 
tvpNext, tvpSum, tvpSum, tp1, tp2);
                             }
                         }
                         result.set(tvpSum);

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AbstractArithmeticScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AbstractArithmeticScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AbstractArithmeticScalarEvaluatorFactory.java
index 1555338..eafb048 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AbstractArithmeticScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AbstractArithmeticScalarEvaluatorFactory.java
@@ -20,6 +20,7 @@ package org.apache.vxquery.runtime.functions.arithmetic;
 import org.apache.vxquery.context.DynamicContext;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
@@ -47,6 +48,8 @@ public abstract class 
AbstractArithmeticScalarEvaluatorFactory extends
         final AbstractArithmeticOperation aOp = createArithmeticOperation();
         final SequencePointable seqp = (SequencePointable) 
SequencePointable.FACTORY.createPointable();
         final DynamicContext dCtx = (DynamicContext) 
ctx.getJobletContext().getGlobalJobData();
+        final TypedPointables tp1 = new TypedPointables();
+        final TypedPointables tp2 = new TypedPointables();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -69,7 +72,7 @@ public abstract class 
AbstractArithmeticScalarEvaluatorFactory extends
                     }
                     throw new SystemException(ErrorCode.XPTY0004);
                 }
-                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp1, tvp2, 
result);
+                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp1, tvp2, 
result, tp1, tp2);
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
index e49d1e6..a1ae69e 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
@@ -108,7 +108,7 @@ public abstract class 
AbstractValueComparisonScalarEvaluatorFactory extends
                         tvp1new.set(tvp1);
                     } else if 
(FunctionHelper.isDerivedFromInteger(tvp1.getTag())) {
                         abvsInteger1.reset();
-                        FunctionHelper.getIntegerPointable(tvp1, dOutInteger1);
+                        FunctionHelper.getIntegerPointable(tvp1, dOutInteger1, 
tp1);
                         tvp1new.set(abvsInteger1.getByteArray(), 
abvsInteger1.getStartOffset(),
                                 LongPointable.TYPE_TRAITS.getFixedLength() + 
1);
                     } else {
@@ -120,7 +120,7 @@ public abstract class 
AbstractValueComparisonScalarEvaluatorFactory extends
                         tvp2new.set(tvp2);
                     } else if 
(FunctionHelper.isDerivedFromInteger(tvp2.getTag())) {
                         abvsInteger2.reset();
-                        FunctionHelper.getIntegerPointable(tvp2, dOutInteger2);
+                        FunctionHelper.getIntegerPointable(tvp2, dOutInteger2, 
tp2);
                         tvp2new.set(abvsInteger2.getByteArray(), 
abvsInteger2.getStartOffset(),
                                 LongPointable.TYPE_TRAITS.getFixedLength() + 
1);
                     } else {

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
index 9a41caa..446b445 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/general/AbstractGeneralComparisonScalarEvaluatorFactory.java
@@ -240,7 +240,7 @@ public abstract class 
AbstractGeneralComparisonScalarEvaluatorFactory extends
                     if (!tagTransformed1) {
                         tvpCompare1.set(tvpTransform1);
                         if 
(FunctionHelper.isDerivedFromDouble(tvpCompare1.getTag())) {
-                            FunctionHelper.getDoublePointable(tvpTransform1, 
dOutInner1);
+                            FunctionHelper.getDoublePointable(tvpTransform1, 
dOutInner1, tp1);
                             tvpCompare1.set(abvsInner1.getByteArray(), 
abvsInner1.getStartOffset(),
                                     
DoublePointable.TYPE_TRAITS.getFixedLength() + 1);
                             tagTransformed1 = true;
@@ -249,7 +249,7 @@ public abstract class 
AbstractGeneralComparisonScalarEvaluatorFactory extends
                     if (!tagTransformed2) {
                         tvpCompare2.set(tvpTransform2);
                         if 
(FunctionHelper.isDerivedFromDouble(tvpCompare2.getTag())) {
-                            FunctionHelper.getDoublePointable(tvpTransform2, 
dOutInner2);
+                            FunctionHelper.getDoublePointable(tvpTransform2, 
dOutInner2, tp2);
                             tvpCompare2.set(abvsInner2.getByteArray(), 
abvsInner2.getStartOffset(),
                                     
DoublePointable.TYPE_TRAITS.getFixedLength() + 1);
                             tagTransformed2 = true;

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/IdFromNodeScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/IdFromNodeScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/IdFromNodeScalarEvaluatorFactory.java
index ee99f62..b3b4d67 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/IdFromNodeScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/IdFromNodeScalarEvaluatorFactory.java
@@ -19,6 +19,7 @@ package org.apache.vxquery.runtime.functions.node;
 import java.io.DataOutput;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.accessors.nodes.NodeTreePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
@@ -48,6 +49,7 @@ public class IdFromNodeScalarEvaluatorFactory extends 
AbstractTaggedValueArgumen
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final DataOutput dOut = abvs.getDataOutput();
         final NodeTreePointable ntp = (NodeTreePointable) 
NodeTreePointable.FACTORY.createPointable();
+        final TypedPointables tp = new TypedPointables();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -55,7 +57,7 @@ public class IdFromNodeScalarEvaluatorFactory extends 
AbstractTaggedValueArgumen
                 TaggedValuePointable tvp1 = args[0];
                 // Only accept node trees as input.
                 try {
-                    int localNodeId = FunctionHelper.getLocalNodeId(tvp1);
+                    int localNodeId = FunctionHelper.getLocalNodeId(tvp1, tp);
                     if (localNodeId == -1) {
                         XDMConstants.setEmptySequence(result);
                     } else {

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/LocalIdFromNodeScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/LocalIdFromNodeScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/LocalIdFromNodeScalarEvaluatorFactory.java
index 5ac59a9..b8aad52 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/LocalIdFromNodeScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/LocalIdFromNodeScalarEvaluatorFactory.java
@@ -19,6 +19,7 @@ package org.apache.vxquery.runtime.functions.node;
 import java.io.DataOutput;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.TypedPointables;
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.datamodel.values.XDMConstants;
 import org.apache.vxquery.exceptions.ErrorCode;
@@ -46,6 +47,7 @@ public class LocalIdFromNodeScalarEvaluatorFactory extends 
AbstractTaggedValueAr
             throws AlgebricksException {
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final DataOutput dOut = abvs.getDataOutput();
+        final TypedPointables tp = new TypedPointables();
 
         return new AbstractTaggedValueArgumentScalarEvaluator(args) {
             @Override
@@ -53,7 +55,7 @@ public class LocalIdFromNodeScalarEvaluatorFactory extends 
AbstractTaggedValueAr
                 TaggedValuePointable tvp1 = args[0];
                 // Only accept node trees as input.
                 try {
-                    int localNodeId = FunctionHelper.getLocalNodeId(tvp1);
+                    int localNodeId = FunctionHelper.getLocalNodeId(tvp1, tp);
                     if (localNodeId == -1) {
                         XDMConstants.setEmptySequence(result);
                     } else {

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/numeric/AbstractNumericScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/numeric/AbstractNumericScalarEvaluatorFactory.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/numeric/AbstractNumericScalarEvaluatorFactory.java
index ffcbb6d..e8ee449 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/numeric/AbstractNumericScalarEvaluatorFactory.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/numeric/AbstractNumericScalarEvaluatorFactory.java
@@ -92,7 +92,7 @@ public abstract class AbstractNumericScalarEvaluatorFactory 
extends AbstractTagg
                                 case ValueTag.XS_BYTE_TAG:
                                 case ValueTag.XS_UNSIGNED_BYTE_TAG:
                                     abvsInteger.reset();
-                                    FunctionHelper.getIntegerPointable(tvp, 
dOutInteger);
+                                    FunctionHelper.getIntegerPointable(tvp, 
dOutInteger, tp);
                                     longp.set(abvsInteger.getByteArray(), 
abvsInteger.getStartOffset() + 1,
                                             
LongPointable.TYPE_TRAITS.getFixedLength());
                             }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/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 e8948cf..922243b 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
@@ -86,7 +86,7 @@ public abstract class 
AbstractNumericUnaryScalarEvaluatorFactory extends
                                 case ValueTag.XS_BYTE_TAG:
                                 case ValueTag.XS_UNSIGNED_BYTE_TAG:
                                     abvsInteger.reset();
-                                    FunctionHelper.getIntegerPointable(tvp, 
dOutInteger);
+                                    FunctionHelper.getIntegerPointable(tvp, 
dOutInteger, tp);
                                     longp.set(abvsInteger.getByteArray(), 
abvsInteger.getStartOffset() + 1,
                                             
LongPointable.TYPE_TRAITS.getFixedLength());
                             }

http://git-wip-us.apache.org/repos/asf/vxquery/blob/79ad8733/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 799d9c7..3b60e4e 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
@@ -53,15 +53,14 @@ import 
edu.uci.ics.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
 public class FunctionHelper {
 
     public static void arithmeticOperation(AbstractArithmeticOperation aOp, 
DynamicContext dCtx,
-            TaggedValuePointable tvp1, TaggedValuePointable tvp2, IPointable 
result) throws SystemException {
+            TaggedValuePointable tvp1, TaggedValuePointable tvp2, IPointable 
result, TypedPointables tp1,
+            TypedPointables tp2) throws SystemException {
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         final DataOutput dOut = abvs.getDataOutput();
         final ArrayBackedValueStorage abvsArgument1 = new 
ArrayBackedValueStorage();
         final DataOutput dOutArgument1 = abvsArgument1.getDataOutput();
         final ArrayBackedValueStorage abvsArgument2 = new 
ArrayBackedValueStorage();
         final DataOutput dOutArgument2 = abvsArgument2.getDataOutput();
-        final TypedPointables tp1 = new TypedPointables();
-        final TypedPointables tp2 = new TypedPointables();
         final CastToDoubleOperation castToDouble = new CastToDoubleOperation();
 
         abvs.reset();
@@ -85,7 +84,7 @@ public class FunctionHelper {
                 case ValueTag.XS_BYTE_TAG:
                 case ValueTag.XS_UNSIGNED_BYTE_TAG:
                     abvsArgument1.reset();
-                    getIntegerPointable(tvp1, dOutArgument1);
+                    getIntegerPointable(tvp1, dOutArgument1, tp1);
                     longp1.set(abvsArgument1.getByteArray(), 
abvsArgument1.getStartOffset() + 1,
                             LongPointable.TYPE_TRAITS.getFixedLength());
                     break;
@@ -118,7 +117,7 @@ public class FunctionHelper {
                 case ValueTag.XS_BYTE_TAG:
                 case ValueTag.XS_UNSIGNED_BYTE_TAG:
                     abvsArgument2.reset();
-                    getIntegerPointable(tvp2, dOutArgument2);
+                    getIntegerPointable(tvp2, dOutArgument2, tp2);
                     longp2.set(abvsArgument2.getByteArray(), 
abvsArgument2.getStartOffset() + 1,
                             LongPointable.TYPE_TRAITS.getFixedLength());
                     break;
@@ -932,9 +931,8 @@ public class FunctionHelper {
         }
     }
 
-    public static void getDoublePointable(TaggedValuePointable tvp, DataOutput 
dOut) throws SystemException,
-            IOException {
-        TypedPointables tp = new TypedPointables();
+    public static void getDoublePointable(TaggedValuePointable tvp, DataOutput 
dOut, TypedPointables tp)
+            throws SystemException, IOException {
         double value;
         switch (tvp.getTag()) {
             case ValueTag.XS_DECIMAL_TAG:
@@ -988,9 +986,8 @@ public class FunctionHelper {
         dOut.writeDouble(value);
     }
 
-    public static void getIntegerPointable(TaggedValuePointable tvp, 
DataOutput dOut) throws SystemException,
-            IOException {
-        TypedPointables tp = new TypedPointables();
+    public static void getIntegerPointable(TaggedValuePointable tvp, 
DataOutput dOut, TypedPointables tp)
+            throws SystemException, IOException {
         long value;
         switch (tvp.getTag()) {
             case ValueTag.XS_INTEGER_TAG:
@@ -1032,9 +1029,8 @@ public class FunctionHelper {
     /**
      * Get the local node id from a tagged value pointable when available.
      */
-    public static int getLocalNodeId(TaggedValuePointable tvp1) {
+    public static int getLocalNodeId(TaggedValuePointable tvp1, 
TypedPointables tp) {
         final TaggedValuePointable tvp = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
-        final TypedPointables tp = new TypedPointables();
         int localNodeId = -1;
         if (tvp1.getTag() == ValueTag.NODE_TREE_TAG) {
             tvp1.getValue(tp.ntp);
@@ -1194,9 +1190,8 @@ public class FunctionHelper {
     }
 
     public static boolean 
transformThenCompareMinMaxTaggedValues(AbstractValueComparisonOperation aOp,
-            TaggedValuePointable tvp1, TaggedValuePointable tvp2, 
DynamicContext dCtx) throws SystemException {
-        final TypedPointables tp1 = new TypedPointables();
-        final TypedPointables tp2 = new TypedPointables();
+            TaggedValuePointable tvp1, TaggedValuePointable tvp2, 
DynamicContext dCtx, TypedPointables tp1,
+            TypedPointables tp2) throws SystemException {
         TaggedValuePointable tvp1new = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
         TaggedValuePointable tvp2new = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
 
@@ -1214,7 +1209,7 @@ public class FunctionHelper {
                 tvp1new.set(abvsArgument1.getByteArray(), 
abvsArgument1.getStartOffset(),
                         DoublePointable.TYPE_TRAITS.getFixedLength() + 1);
             } else if (isDerivedFromInteger(tvp1.getTag())) {
-                getIntegerPointable(tvp1, dOutArgument1);
+                getIntegerPointable(tvp1, dOutArgument1, tp1);
                 tvp1new.set(abvsArgument1.getByteArray(), 
abvsArgument1.getStartOffset(),
                         LongPointable.TYPE_TRAITS.getFixedLength() + 1);
             } else {
@@ -1227,7 +1222,7 @@ public class FunctionHelper {
                 tvp2new.set(abvsArgument2.getByteArray(), 
abvsArgument2.getStartOffset(),
                         DoublePointable.TYPE_TRAITS.getFixedLength() + 1);
             } else if (isDerivedFromInteger(tvp2.getTag())) {
-                getIntegerPointable(tvp2, dOutArgument2);
+                getIntegerPointable(tvp2, dOutArgument2, tp1);
                 tvp2new.set(abvsArgument2.getByteArray(), 
abvsArgument2.getStartOffset(),
                         LongPointable.TYPE_TRAITS.getFixedLength() + 1);
             } else {

Reply via email to