From d2a2cc12dc7cf85eeacf939f76e9d0457a254047 Mon Sep 17 00:00:00 2001 From: David Wayne Smiley Date: Sat, 13 Jul 2013 00:05:10 +0000 Subject: [PATCH] SOLR-5034: A facet.query that parses or analyzes down to a null Query would throw a NPE. git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1502730 13f79535-47bb-0310-9956-ffa450edef68 --- solr/CHANGES.txt | 3 +++ .../src/java/org/apache/solr/request/SimpleFacets.java | 4 +++- .../src/test/org/apache/solr/request/SimpleFacetsTest.java | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index fe8757008a7..a6d887b4ce2 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -307,6 +307,9 @@ Bug Fixes switching shard states. Multiple bugs related to sub shard recovery and replication are also fixed. (shalin) +* SOLR-5034: A facet.query that parses or analyzes down to a null Query would + throw a NPE. Fixed. (David Smiley) + Optimizations ---------------------- diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java index 4adf02e8b21..7822c1e7f80 100644 --- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java +++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java @@ -295,7 +295,9 @@ public class SimpleFacets { // TODO: slight optimization would prevent double-parsing of any localParams Query qobj = QParser.getParser(q, null, req).getQuery(); - if (params.getBool(GroupParams.GROUP_FACET, false)) { + if (qobj == null) { + res.add(key, 0); + } else if (params.getBool(GroupParams.GROUP_FACET, false)) { res.add(key, getGroupedFacetQueryCount(qobj)); } else { res.add(key, searcher.numDocs(qobj, docs)); diff --git a/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java b/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java index f65d669cd1c..b5162009435 100644 --- a/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java +++ b/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java @@ -621,6 +621,13 @@ public class SimpleFacetsTest extends SolrTestCaseJ4 { ) ,"*[count(//lst[@name='zerolen_s']/int)=1]" ); + + assertQ("a facet.query that analyzes to no query shoud not NPE", + req("q", "*:*", + "facet", "true", + "facet.query", "{!field key=k f=lengthfilt}a"),//2 char minimum + "//lst[@name='facet_queries']/int[@name='k'][.='0']" + ); } public static void indexDateFacets() {