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 11:56:02 UTC
[solr] branch main 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 main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new a3d59161ef4 SOLR-16227: Solr SQL query parsing fails on multiple LIKE clauses and multiple terms
a3d59161ef4 is described below
commit a3d59161ef472f879089012e62876542575d07a2
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 dd00dfbdc51..51389bdc24b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -831,6 +831,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 1e04527337f..0f2a3fb2c20 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);
}