You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2017/08/16 20:28:38 UTC
lucene-solr:branch_6_6: SOLR-10908: CloudSolrStream.toExpression
incorrectly handles fq clauses
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6_6 5ad78efc9 -> 8547474c8
SOLR-10908: CloudSolrStream.toExpression incorrectly handles fq clauses
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8547474c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8547474c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8547474c
Branch: refs/heads/branch_6_6
Commit: 8547474c8ad815baf352cb86d4b1618d7dc5ac8b
Parents: 5ad78ef
Author: Erick <er...@apache.org>
Authored: Wed Aug 16 13:28:29 2017 -0700
Committer: Erick <er...@apache.org>
Committed: Wed Aug 16 13:28:35 2017 -0700
----------------------------------------------------------------------
.../client/solrj/io/stream/CloudSolrStream.java | 24 ++++++++++++--------
.../stream/StreamExpressionToExpessionTest.java | 5 +++-
2 files changed, 19 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8547474c/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/CloudSolrStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/CloudSolrStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/CloudSolrStream.java
index 6d1764a..76c4fbe 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/CloudSolrStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/CloudSolrStream.java
@@ -193,18 +193,24 @@ public class CloudSolrStream extends TupleStream implements Expressible {
// collection
expression.addParameter(collection);
- // parameters
-
ModifiableSolrParams mParams = new ModifiableSolrParams(SolrParams.toMultiMap(params.toNamedList()));
for (Entry<String, String[]> param : mParams.getMap().entrySet()) {
- String value = String.join(",", param.getValue());
-
- // SOLR-8409: This is a special case where the params contain a " character
- // Do note that in any other BASE streams with parameters where a " might come into play
- // that this same replacement needs to take place.
- value = value.replace("\"", "\\\"");
- expression.addParameter(new StreamExpressionNamedParameter(param.getKey(), value));
+ if(param.getKey().equals("fq")) {
+ for(String fqParam : param.getValue()) {
+ // See comment below for params containg a " character
+ expression.addParameter(new StreamExpressionNamedParameter(param.getKey(),
+ fqParam.replace("\"", "\\\"")));
+ }
+ } else {
+ String value = String.join(",", param.getValue());
+
+ // SOLR-8409: This is a special case where the params contain a " character
+ // Do note that in any other BASE streams with parameters where a " might come into play
+ // that this same replacement needs to take place.
+ value = value.replace("\"", "\\\"");
+ expression.addParameter(new StreamExpressionNamedParameter(param.getKey(), value));
+ }
}
// zkHost
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8547474c/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
index 0a597b7..36b2829 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
@@ -74,12 +74,15 @@ public class StreamExpressionToExpessionTest extends LuceneTestCase {
String expressionString;
// Basic test
- stream = new CloudSolrStream(StreamExpressionParser.parse("search(collection1, q=*:*, fl=\"id,a_s,a_i,a_f\", sort=\"a_f asc, a_i asc\")"), factory);
+ stream = new CloudSolrStream(StreamExpressionParser.parse("search(collection1, q=*:*, fl=\"id,a_s,a_i,a_f\", sort=\"a_f asc, a_i asc\", fq=\"a_s:one\", fq=\"a_s:two\")"), factory);
expressionString = stream.toExpression(factory).toString();
+ System.out.println("ExpressionString: " + expressionString.toString());
assertTrue(expressionString.contains("search(collection1,"));
assertTrue(expressionString.contains("q=\"*:*\""));
assertTrue(expressionString.contains("fl=\"id,a_s,a_i,a_f\""));
assertTrue(expressionString.contains("sort=\"a_f asc, a_i asc\""));
+ assertTrue(expressionString.contains("fq=\"a_s:one\""));
+ assertTrue(expressionString.contains("fq=\"a_s:two\""));
// Basic w/aliases
stream = new CloudSolrStream(StreamExpressionParser.parse("search(collection1, q=*:*, fl=\"id,a_s,a_i,a_f\", sort=\"a_f asc, a_i asc\", aliases=\"id=izzy,a_s=kayden\")"), factory);