You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2020/06/17 23:45:32 UTC

[lucene-solr] branch branch_8x updated: SOLR-14577: Return BAD REQUEST when field is missing in terms QP (#1588)

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

tflobbe pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8x by this push:
     new bdcbf10  SOLR-14577: Return BAD REQUEST when field is missing in terms QP (#1588)
bdcbf10 is described below

commit bdcbf1019bc7773f2c08a4d31c7b6981765b2a46
Author: Tomas Fernandez Lobbe <tf...@apache.org>
AuthorDate: Wed Jun 17 16:02:48 2020 -0700

    SOLR-14577: Return BAD REQUEST when field is missing in terms QP (#1588)
---
 solr/CHANGES.txt                                                    | 3 +++
 solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java   | 3 +++
 .../src/test/org/apache/solr/search/TestTermsQParserPlugin.java     | 6 ++++++
 3 files changed, 12 insertions(+)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index c90f4e0..1fb7c27 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -168,6 +168,9 @@ Bug Fixes
 
 * SOLR-14345: Return proper error message when non-BinaryResponseParser is used in solrJ (Munendra S N)
 
+* SOLR-14577: Return 400 BAD REQUEST when field is missing on a Terms query parser request
+  (Tomás Fernández Löbbe)
+
 Other Changes
 ---------------------
 * SOLR-14197: SolrResourceLoader: marked many methods as deprecated, and in some cases rerouted exiting logic to avoid
diff --git a/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
index 1d92b7c..9a8a12a 100644
--- a/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/TermsQParserPlugin.java
@@ -123,6 +123,9 @@ public class TermsQParserPlugin extends QParserPlugin {
       @Override
       public Query parse() throws SyntaxError {
         String fname = localParams.get(QueryParsing.F);
+        if (fname == null || fname.isEmpty()) {
+          throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Missing field to query");
+        }
         FieldType ft = req.getSchema().getFieldType(fname);
         String separator = localParams.get(SEPARATOR, ",");
         String qstr = localParams.get(QueryParsing.V);//never null
diff --git a/solr/core/src/test/org/apache/solr/search/TestTermsQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestTermsQParserPlugin.java
index 5f5250c..bd501e9 100644
--- a/solr/core/src/test/org/apache/solr/search/TestTermsQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestTermsQParserPlugin.java
@@ -18,6 +18,7 @@
 package org.apache.solr.search;
 
 import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -71,6 +72,11 @@ public class TestTermsQParserPlugin extends SolrTestCaseJ4 {
         "//result/doc[5]/str[@name='id'][.='7']"
     );
   }
+  
+  @Test
+  public void testMissingField() {
+    assertQEx("Expecting bad request", "Missing field to query", req("q", "{!terms}childrens|scifi"), SolrException.ErrorCode.BAD_REQUEST);
+  }
 
   class TermsParams {
     public String method;