You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/09/18 16:25:01 UTC
[27/50] lucene-solr:feature/autoscaling_72: SOLR-11344: Fix
copyOfRange Stream Evaluator so the end index parameter can be equal to the
length array
SOLR-11344: Fix copyOfRange Stream Evaluator so the end index parameter can be equal to the length array
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a4fc14ba
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a4fc14ba
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a4fc14ba
Branch: refs/heads/feature/autoscaling_72
Commit: a4fc14baed323c1e52dfe85a3eff5aa7c7b6c5ec
Parents: 0283d3e
Author: Joel Bernstein <jb...@apache.org>
Authored: Sat Sep 9 20:23:07 2017 -0400
Committer: Joel Bernstein <jb...@apache.org>
Committed: Sat Sep 9 20:24:05 2017 -0400
----------------------------------------------------------------------
.../solr/client/solrj/io/eval/CopyOfRangeEvaluator.java | 4 ++--
.../client/solrj/io/stream/StreamExpressionTest.java | 11 ++++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a4fc14ba/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CopyOfRangeEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CopyOfRangeEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CopyOfRangeEvaluator.java
index 685ef30..6688571 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CopyOfRangeEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CopyOfRangeEvaluator.java
@@ -79,8 +79,8 @@ public class CopyOfRangeEvaluator extends RecursiveNumericEvaluator implements M
throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - startIdx (%d) must be less than endIdx (%d)", toExpression(constructingFactory), startIdx, endIdx));
}
- if(endIdx >= sourceValues.size()){
- throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - endIdx (%d) must be less than size of source array (%d)", toExpression(constructingFactory), endIdx, sourceValues.size()));
+ if(endIdx > sourceValues.size()){
+ throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - endIdx (%d) must not be greater then size of source array (%d)", toExpression(constructingFactory), endIdx, sourceValues.size()));
}
return Arrays.stream(Arrays.copyOfRange(sourceValues.toArray(), startIdx, endIdx)).collect(Collectors.toList());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a4fc14ba/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
index 2ee881e..9b2b186 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
@@ -5776,7 +5776,7 @@ public class StreamExpressionTest extends SolrCloudTestCase {
"field=\"test_dt\", " +
"count(*), sum(price_f), max(price_f), min(price_f))";
- String cexpr = "let(a="+expr+", c=col(a, max(price_f)), tuple(copy=copyOfRange(c, 1, 3)))";
+ String cexpr = "let(a="+expr+", c=col(a, max(price_f)), tuple(copy=copyOfRange(c, 1, 3), copy2=copyOfRange(c, 2, 4), l=length(c)))";
ModifiableSolrParams paramsLoc = new ModifiableSolrParams();
paramsLoc.set("expr", cexpr);
@@ -5793,6 +5793,15 @@ public class StreamExpressionTest extends SolrCloudTestCase {
assertTrue(copy1.size() == 2);
assertTrue(copy1.get(0).doubleValue() == 500D);
assertTrue(copy1.get(1).doubleValue() == 300D);
+
+ List<Number> copy2 = (List<Number>)tuples.get(0).get("copy2");
+ assertTrue(copy2.size() == 2);
+ assertTrue(copy2.get(0).doubleValue() == 300D);
+ assertTrue(copy2.get(1).doubleValue() == 400D);
+
+ long l = tuples.get(0).getLong("l");
+ assertTrue(l == 4);
+
}