Uploaded image for project: 'MongoDB Database Tools'
  1. MongoDB Database Tools
  2. TOOLS-571

mongoimport should handle subnormal floating point numbers

    • Type: Icon: Task Task
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      When handling a document containing a very small double, mongoimport fails to insert the document.

      For example, when trying to import the following document:

      { "val" : 6.916919041777452e-323 }
      

      mongoimport fails to insert the document and returns the following error:

      exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Value cannot fit in double: offset:7 of:{"val":6.916919041777452e-323}
      

      I would argue that, while not in contravention of RFC7159 (which leaves this as undefined behaviour), the fact that mongoimport chokes on e.g. 6.916919041777452e-323 is a bug, or at best inconsistent behaviour.

      For example, try passing the document {"val" : 3.141592653589793238462643383279} to mongoimport. It is successfully inserted, however when reading it back from the database we see {"val" : 3.141592653589793}, which is the closest representation as a IEEE 754 binary64. To me, it doesn't make sense that we exhibit this "store as nearest possible BSON representation" behaviour for some inputs but not for others. It would be better if we were consistently lenient, since we certainly don't guarantee to preserve numerical accuracy as we can see from the above example.

            Assignee:
            Unassigned Unassigned
            Reporter:
            jon.rangel@mongodb.com Jon Rangel (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: