chore: Add global order min/max per tile to the fragment metadata
Resolves CORE-321.
Today's fragment metadata contains the minimum bounding rectangle of each tile. This is very useful for determining whether tiles can satisfy spatial queries, but much less useful for determining how different tiles from different fragments may or may not interleave (knowledge of which can be used to implement several possible optimizations). This is because the bounding rectangle can under-estimate the true lower bound of the global order value in a tile, potentially by a lot.
We would like for our queries to start to leverage the interleaving of tiles from different fragments in the ways described in that linked document. First we must extend the fragment metadata to include the tile global order bounds. This pull request implements that:
- we update the fragment metadata format version and specification to include a section with the global order lower and upper bounds for each tile in a fragment.
- we add C and C++ APIs to query those bounds.
- we update the writers to populate the correct values in fragment metadata and test this for the unordered writer, global order writer, and fragment consoliator.
TYPE: C_API | CPP_API | FORMAT DESC: Add per-tile global order bounds to fragment metadata
Before merging this PR, estimate impact of it on this other issue. Will we make that problem worse?