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)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 6.2
    • Fix Version/s: 6.2.1, 6.3, 7.0
    • Component/s: None
    • Security Level: Public (Default Security Level. Issues are Public)
    • Labels:
      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...

      Colvin Cowie...

      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
          Hoss Man
        3. SOLR-9490.patch
          2 kB
          Hoss Man

          Issue Links

            Activity

              People

              • Assignee:
                hossman Hoss Man
                Reporter:
                hossman Hoss Man
              • Votes:
                1 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: