You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ds...@apache.org on 2022/06/06 12:27:47 UTC

[solr] branch branch_9x updated: SOLR-16227: Solr SQL query parsing fails on multiple LIKE clauses and multiple terms

This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new 02f3b6fdef7 SOLR-16227: Solr SQL query parsing fails on multiple LIKE clauses and multiple terms
02f3b6fdef7 is described below

commit 02f3b6fdef799b2ee64ee0929a670a7beaf7c926
Author: Kiran Chitturi <ch...@gmail.com>
AuthorDate: Wed Jun 1 11:04:33 2022 -0700

    SOLR-16227: Solr SQL query parsing fails on multiple LIKE clauses and multiple terms
---
 solr/CHANGES.txt                                                      | 3 +++
 solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java | 4 +++-
 .../sql/src/test/org/apache/solr/handler/sql/TestSQLHandler.java      | 3 ++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 44ab46cc963..f8e86782296 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -805,6 +805,9 @@ Bug Fixes
 
 * SOLR-16215: Escape query characters in Solr SQL Array UDF functions (Kiran Chitturi via Timothy Potter)
 
+* SOLR-16227: Solr SQL query parsing fails on multiple LIKE clauses and multiple terms
+  (Kiran Chitturi via David Smiley)
+
 ==================  8.11.1 ==================
 
 Bug Fixes
diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java
index b5ba948c07c..464a3788cdd 100644
--- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java
+++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java
@@ -21,6 +21,7 @@ import java.math.BigDecimal;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -363,7 +364,8 @@ class SolrFilter extends Filter implements SolrRel {
         boolean hasMultipleTerms = terms.split("\\s+").length > 1;
         if (hasMultipleTerms && (terms.contains("*") || terms.contains("?"))) {
           String quotedTerms = "\"" + terms.substring(1, terms.length() - 1) + "\"";
-          return "{!complexphrase}" + pair.getKey() + ":" + quotedTerms;
+          String query = ClientUtils.encodeLocalParamVal(pair.getKey() + ":" + quotedTerms);
+          return String.format(Locale.ROOT, "{!complexphrase v=%s}", query);
         }
       } // else treat as an embedded Solr query and pass-through
 
diff --git a/solr/modules/sql/src/test/org/apache/solr/handler/sql/TestSQLHandler.java b/solr/modules/sql/src/test/org/apache/solr/handler/sql/TestSQLHandler.java
index b08cef64391..ab97d2714b2 100644
--- a/solr/modules/sql/src/test/org/apache/solr/handler/sql/TestSQLHandler.java
+++ b/solr/modules/sql/src/test/org/apache/solr/handler/sql/TestSQLHandler.java
@@ -2553,7 +2553,8 @@ public class TestSQLHandler extends SolrCloudTestCase {
 
     expectResults("SELECT b_s FROM $ALIAS WHERE c_t LIKE '(\"dog pig\"~5)'", 2);
     expectResults("SELECT b_s FROM $ALIAS WHERE c_t LIKE 'jumped over'", 8);
-    expectResults("SELECT b_s FROM $ALIAS WHERE c_t LIKE 'quick brown fox'", 5);
+    expectResults("SELECT b_s FROM $ALIAS WHERE c_t LIKE 'quick brow%'", 5);
+    expectResults("SELECT b_s FROM $ALIAS WHERE c_t LIKE 'quick brow%' AND b_s LIKE 'foo*'", 3);
     expectResults("SELECT b_s FROM $ALIAS WHERE b_s LIKE 'foo*'", 5);
     expectResults("SELECT b_s FROM $ALIAS WHERE c_t LIKE '*og'", 8);
   }