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 2014/04/02 23:13:21 UTC

[2/2] git commit: Simplified the aggregate step functions with better init values.

Simplified the aggregate step functions with better init values.


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

Branch: refs/heads/prestonc/hash_join
Commit: c813b097f8179771a934a9aac0cce0824edf5986
Parents: 903576e
Author: Preston Carman <pr...@apache.org>
Authored: Tue Apr 1 21:57:19 2014 -0700
Committer: Preston Carman <pr...@apache.org>
Committed: Tue Apr 1 21:57:19 2014 -0700

----------------------------------------------------------------------
 .../AvgLocalAggregateEvaluatorFactory.java      | 23 ++++------
 .../FnSumAggregateEvaluatorFactory.java         | 45 ++++++--------------
 2 files changed, 21 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/c813b097/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 45414dc..6763a67 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
@@ -17,13 +17,11 @@
 package org.apache.vxquery.runtime.functions.aggregate;
 
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder;
 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.arithmetic.AddOperation;
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentAggregateEvaluator;
@@ -62,6 +60,14 @@ public class AvgLocalAggregateEvaluatorFactory extends AbstractTaggedValueArgume
             @Override
             public void init() throws AlgebricksException {
                 count = 0;
+                try {
+                    abvsSum.reset();
+                    dOutSum.write(ValueTag.XS_INTEGER_TAG);
+                    dOutSum.writeLong(0);
+                    tvpSum.set(abvsSum);
+                } catch (Exception e) {
+                    throw new AlgebricksException(e);
+                }
             }
 
             @Override
@@ -92,18 +98,7 @@ public class AvgLocalAggregateEvaluatorFactory extends AbstractTaggedValueArgume
             @Override
             protected void step(TaggedValuePointable[] args) throws SystemException {
                 TaggedValuePointable tvp = args[0];
-                if (count == 0) {
-                    // Init.
-                    try {
-                        abvsSum.reset();
-                        dOutSum.write(tvp.getByteArray(), tvp.getStartOffset(), tvp.getLength());
-                        tvpSum.set(abvsSum);
-                    } catch (IOException e) {
-                        throw new SystemException(ErrorCode.SYSE0001, e.toString());
-                    }
-                } else {
-                    FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, tvpSum);
-                }
+                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, tvpSum);
                 count++;
             }
         };

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/c813b097/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 8572a11..8a55f3c 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
@@ -21,7 +21,6 @@ import java.io.IOException;
 
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.datamodel.values.ValueTag;
-import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.runtime.functions.arithmetic.AddOperation;
 import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentAggregateEvaluator;
@@ -44,56 +43,36 @@ public class FnSumAggregateEvaluatorFactory extends AbstractTaggedValueArgumentA
 
     @Override
     protected IAggregateEvaluator createEvaluator(IScalarEvaluator[] args) throws AlgebricksException {
-        final ArrayBackedValueStorage abvsCount = new ArrayBackedValueStorage();
-        final DataOutput dOutCount = abvsCount.getDataOutput();
         final ArrayBackedValueStorage abvsSum = new ArrayBackedValueStorage();
         final DataOutput dOutSum = abvsSum.getDataOutput();
         final AddOperation aOp = new AddOperation();
 
         return new AbstractTaggedValueArgumentAggregateEvaluator(args) {
-            long count;
             TaggedValuePointable tvpSum = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
 
+            // TODO Check if the second argument is supplied as the zero value.
+
             @Override
             public void init() throws AlgebricksException {
-                count = 0;
+                try {
+                    abvsSum.reset();
+                    dOutSum.write(ValueTag.XS_INTEGER_TAG);
+                    dOutSum.writeLong(0);
+                    tvpSum.set(abvsSum);
+                } catch (IOException e) {
+                    throw new AlgebricksException(e.toString());
+                }
             }
 
             @Override
             public void finish(IPointable result) throws AlgebricksException {
-                // TODO What is returned when step is never called. Since the second argument is the zero value.
-                if (count == 0) {
-                    // No argument return an integer.
-                    try {
-                        abvsCount.reset();
-                        dOutCount.write(ValueTag.XS_INTEGER_TAG);
-                        dOutCount.writeLong(0);
-                        result.set(abvsCount);
-                    } catch (Exception e) {
-                        
-                        throw new AlgebricksException(e);
-                    }
-                } else {
-                    result.set(tvpSum);
-                }
+                result.set(tvpSum);
             }
 
             @Override
             protected void step(TaggedValuePointable[] args) throws SystemException {
                 TaggedValuePointable tvp = args[0];
-                if (count == 0) {
-                    // Init.
-                    try {
-                        abvsSum.reset();
-                        dOutSum.write(tvp.getByteArray(), tvp.getStartOffset(), tvp.getLength());
-                        tvpSum.set(abvsSum);
-                    } catch (IOException e) {
-                        throw new SystemException(ErrorCode.SYSE0001, e.toString());
-                    }
-                } else {
-                    FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, tvpSum);
-                }
-                count++;
+                FunctionHelper.arithmeticOperation(aOp, dCtx, tvp, tvpSum, tvpSum);
             }
         };
     }