Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-86900

Support all types in general path for decompressing interleaved

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 8.0.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Integration
    • Fully Compatible

      Currently we support only a few types in  the general path for decompressing interleaved data, for example:

      https://github.com/10gen/mongo/blob/24bd7f6a18587606c8b62d2a26c35e94f1512c8b/src/mongo/bson/util/bsoncolumn_helpers.h#L696

      We only support the 64-bit types that do not use delta-of-delta encoding at the moment.

      We can group the remaining types into a few categories:

      • doubles (they need the scaling from the control byte applied to the deltas)
      • delta-of-delta types (e.g., timestamps, OIDs)
      • 128-bit types

      The general case for decompressing interleaved is quite similar to the iterator interface for decompression. The code _incrementInterleaved() and the different methods it calls can serve as a good example of how to get this functionality in the block-based version:

      https://github.com/10gen/mongo/blob/24bd7f6a18587606c8b62d2a26c35e94f1512c8b/src/mongo/bson/util/bsoncolumn.cpp#L268 

            Assignee:
            naama.bareket@mongodb.com Naama Bareket
            Reporter:
            chris.wolff@mongodb.com Chris Wolff
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: