Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-15031

NPE caused by FunctionQParser returning a null ValueSource

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 8.8, 9.0
    • None
    • None

    Description

      When parsing a sub query in a function query, FunctionQParser#parseValueSource does not check if the produced query object is null. When it is, it just wraps a null in a QueryValueSource object. This is a cause for NPE's in code consuming that object. Parsed queries can be null, for example when the query string only contains stopwords, so we need handle that condition.

      Steps to reproduce the issue

      1. Start solr with the techproducts example collection: solr start -e techproducts
      2. Add a stopword to SOLR_DIR/example/techproducts/solr/techproducts/conf/stopwords.txt, for example "at"
      3. Reload the core
      4. Execute a function query:
        http://localhost:8983/solr/techproducts/select?fieldquery={!field%20f=features%20v=%27%22at%22%27}&q={!func}%20if($fieldquery,1,0)

      The following stacktrace is produced:

      2020-12-03 13:35:38.868 INFO  (qtp2095677157-21) [   x:techproducts] o.a.s.c.S.Request [techproducts]  webapp=/solr path=/select params={q={!func}+if($fieldquery,1,0)&fieldquery={!field+f%3Dfeatures+v%3D'"at"'}} status=500 QTime=34
      2020-12-03 13:35:38.872 ERROR (qtp2095677157-21) [   x:techproducts] o.a.s.s.HttpSolrCall null:java.lang.NullPointerException
              at org.apache.lucene.queries.function.valuesource.QueryValueSource.hashCode(QueryValueSource.java:63)
              at org.apache.lucene.queries.function.valuesource.IfFunction.hashCode(IfFunction.java:129)
              at org.apache.lucene.queries.function.FunctionQuery.hashCode(FunctionQuery.java:176)
              at org.apache.solr.search.QueryResultKey.<init>(QueryResultKey.java:53)
              at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1341)
              at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:580)
      

      Attachments

        Issue Links

          Activity

            People

              mdrob Mike Drob
              boxtelp Pieter
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2h 10m
                  2h 10m