You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2014/03/14 23:09:27 UTC
[06/25] git commit: Added short circuiting for both AND and OR scalar
evaluators.
Added short circuiting for both AND and OR scalar evaluators.
Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/442f5845
Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/442f5845
Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/442f5845
Branch: refs/heads/westmann/prettyprint
Commit: 442f5845ead4dbb70442feb168cb69b3e6dc2d82
Parents: de02fe5
Author: Preston Carman <pr...@apache.org>
Authored: Thu Feb 13 11:26:31 2014 -0800
Committer: Preston Carman <pr...@apache.org>
Committed: Thu Feb 13 11:26:31 2014 -0800
----------------------------------------------------------------------
.../bool/AndScalarEvaluatorFactory.java | 41 +++++++++++++-------
.../bool/OrScalarEvaluatorFactory.java | 40 ++++++++++++-------
2 files changed, 51 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/442f5845/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
index b1785de..15570a8 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
@@ -18,8 +18,6 @@ package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -28,6 +26,7 @@ import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
public class AndScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -39,20 +38,32 @@ public class AndScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalar
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
throws AlgebricksException {
- return new AbstractTaggedValueArgumentScalarEvaluator(args) {
- private final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
-
- @Override
- protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
- for (TaggedValuePointable arg : args) {
- arg.getValue(bp);
- if (!bp.getBoolean()) {
- XDMConstants.setFalse(result);
- return;
- }
+ return new AndScalarEvaluator(args);
+ }
+
+ private class AndScalarEvaluator implements IScalarEvaluator {
+ private final IScalarEvaluator[] args;
+
+ private final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
+
+ private final TaggedValuePointable tvp = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+
+ public AndScalarEvaluator(IScalarEvaluator[] args) {
+ this.args = args;
+ }
+
+ @Override
+ public final void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ for (int i = 0; i < args.length; ++i) {
+ args[i].evaluate(tuple, tvp);
+ tvp.getValue(bp);
+ if (!bp.getBoolean()) {
+ XDMConstants.setFalse(result);
+ return;
}
- XDMConstants.setTrue(result);
}
- };
+ XDMConstants.setTrue(result);
+ }
}
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/442f5845/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
index 5309ba5..c09de95 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
@@ -18,8 +18,6 @@ package org.apache.vxquery.runtime.functions.bool;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -28,6 +26,7 @@ import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
public class OrScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -39,20 +38,31 @@ public class OrScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarE
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
throws AlgebricksException {
- return new AbstractTaggedValueArgumentScalarEvaluator(args) {
- private final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
-
- @Override
- protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
- for (TaggedValuePointable arg : args) {
- arg.getValue(bp);
- if (bp.getBoolean()) {
- XDMConstants.setTrue(result);
- return;
- }
+ return new OrScalarEvaluator(args);
+ }
+
+ private class OrScalarEvaluator implements IScalarEvaluator {
+ private final IScalarEvaluator[] args;
+
+ private final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
+
+ private final TaggedValuePointable tvp = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable();
+
+ public OrScalarEvaluator(IScalarEvaluator[] args) {
+ this.args = args;
+ }
+
+ @Override
+ public final void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ for (int i = 0; i < args.length; ++i) {
+ args[i].evaluate(tuple, tvp);
+ tvp.getValue(bp);
+ if (bp.getBoolean()) {
+ XDMConstants.setTrue(result);
+ return;
}
- XDMConstants.setFalse(result);
}
- };
+ XDMConstants.setFalse(result);
+ }
}
}
\ No newline at end of file