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/07/13 19:29:40 UTC

lucene-solr:branch_7_0: commit 4241a13beb0a14e8bd81a520bd8e04ab6c7465aa Author: Erick Erickson Date: Thu Jul 13 10:39:33 2017 -0700

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_7_0 8ddf0c208 -> fbc3d31f1


commit 4241a13beb0a14e8bd81a520bd8e04ab6c7465aa
Author: Erick Erickson <er...@apache.org>
Date:   Thu Jul 13 10:39:33 2017 -0700

    SOLR-10908: CloudSolrStream.toExpression incorrectly handles fq clauses

(cherry picked from commit 19fd95b46cf40fa0b91b7dcf0b157706ea718efb)


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/fbc3d31f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/fbc3d31f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/fbc3d31f

Branch: refs/heads/branch_7_0
Commit: fbc3d31f1bab7616ea631cf645923d09ef8123f3
Parents: 8ddf0c2
Author: Erick Erickson <er...@apache.org>
Authored: Thu Jul 13 12:29:25 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Thu Jul 13 12:29:25 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  4 ++++
 .../client/solrj/io/stream/CloudSolrStream.java | 24 ++++++++++++--------
 .../stream/StreamExpressionToExpessionTest.java |  5 +++-
 3 files changed, 23 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fbc3d31f/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2b2095e..c034c47 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -561,6 +561,10 @@ when using one of Exact*StatsCache (Mikhail Khludnev)
 
 * SOLR-10914: RecoveryStrategy's sendPrepRecoveryCmd can get stuck for 5 minutes if leader is unloaded. (shalin)
 
+* SOLR-11024: ParallelStream should set the StreamContext when constructing SolrStreams (Joel Bernstein)
+
+* SOLR-10908: CloudSolrStream.toExpression incorrectly handles fq clauses (Rohit Singh via Erick Erickson)
+
 Optimizations
 ----------------------
 * SOLR-10634: JSON Facet API: When a field/terms facet will retrieve all buckets (i.e. limit:-1)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fbc3d31f/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 62e4079..7fe98a3 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
@@ -172,18 +172,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/fbc3d31f/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);