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

BoolField always returning false for non-DV fields when javabin involved (via solrj, or intra node communication)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 6.2
    • 6.2.1, 6.3, 7.0
    • None
    • None

    Description

      2 diff users posted comments in SOLR-9187 indicating that changes introduced in that issue have broken BoolFields that do not use DocValues...

      cjcowie...

      Hi, I've just picked up 6.2.0. It seems that the change to toExternal() in BoolField now means that booleans without DocValues return null, which then turns into Boolean.FALSE in toObject() regardless of whether the value is true or false.

      e.g. with this schema, facet counts are correct, the returned values are wrong.

      <field name="f_EVE64" type="boolean" indexed="true" stored="true" required="false" multiValued="false"/>
      <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
      
      "response":{"numFound":2,"start":0,"maxScore":1.0,"docs":[
            {
              "id":"124",
              "f_EVE64":false,
              "_version_":1544828487600177152},
            {
              "id":"123",
              "f_EVE64":false,
              "_version_":1544828492458229760}]
        },
        "facet_counts":{
          "facet_queries":{},
          "facet_fields":{
            "f_EVE64":[
              "false",1,
              "true",1]},
      

      Could toExternal() perhaps fallback to how it originally behaved? e.g.

      if (f.binaryValue() == null) {
            return indexedToReadable(f.stringValue());
      }
      

      pavan_shetty...

      I downloaded solr version 6.2.0 (6.2.0 764d0f19151dbff6f5fcd9fc4b2682cf934590c5 - mike - 2016-08-20 05:41:37) and installed my core.

      In my schema.xml i have an field like following :

      <field name="stock_status" type="boolean" indexed="true" stored="true" multiValued="false"/>

      Now i am accessing this field using SolrJ (6.1.0). But i am always getting false value for above field even though it contains true boolean value. This is happening for all boolean fields.

      http://localhost:8983/solr...wt=javabin&version=2 HTTP/1.1

      It is working fine in other response writer.

      If i change the solr version to 6.1.0, with same SolrJ, it starts working. So clearly this is a bug in version 6.2.0.

      Attachments

        1. Solr9490.java
          2 kB
          Dan Fox
        2. SOLR-9490.patch
          1 kB
          Chris M. Hostetter
        3. SOLR-9490.patch
          2 kB
          Chris M. Hostetter

        Issue Links

          Activity

            People

              hossman Chris M. Hostetter
              hossman Chris M. Hostetter
              Votes:
              1 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: