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/09 00:16:13 UTC
[15/50] [abbrv] 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/master
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);
}
};
}