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)

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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...

      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. SOLR-9490.patch
          1 kB
          Chris M. Hostetter
        2. SOLR-9490.patch
          2 kB
          Chris M. Hostetter
        3. Solr9490.java
          2 kB
          Dan Fox

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          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:

              Slack

                Issue deployment