-
Type: Task
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
8
-
2023-07-25 Absolute unit
This work came out of WT-11060, where it was identified that we cannot sort prepared transaction modifications on trees that use collators. This is because WiredTiger's compare code requires a session pointer when using a collator which isn't available on the WT_TXN_OP structure that is being sorted. Regular qsort in the c std library cannot take a context arg, which is what qsort_r was created for. However qsort_r is implemented differently across most major platforms and is a cause for concern, we also considered implementing qsort_r using a static thread_local argument but that is outside of WiredTigers practices.
Of course we could continue leaving collators behind or add a WT_SESSION pointer to WT_TXN_OP but both of those solutions were rejected as well. See WT-11060 for more details. The decided upon solution was to implement qsort and qsort_r in WiredTiger.
Scope:
- Implement qsort and qsort_r in WiredTiger.