Compare two documents using pre-extracted key byte ranges. `a_ranges`/`b_ranges` are `(start, end)` byte slices into the respective docs.
(
a_doc: &[u8],
a_ranges: &[(usize, usize)],
b_doc: &[u8],
b_ranges: &[(usize, usize)],
)
| 116 | /// Compare two documents using pre-extracted key byte ranges. |
| 117 | /// `a_ranges`/`b_ranges` are `(start, end)` byte slices into the respective docs. |
| 118 | pub(super) fn compare_preextracted( |
| 119 | a_doc: &[u8], |
| 120 | a_ranges: &[(usize, usize)], |
| 121 | b_doc: &[u8], |
| 122 | b_ranges: &[(usize, usize)], |
| 123 | ) -> std::cmp::Ordering { |
| 124 | use nodedb_query::msgpack_scan::compare_field_bytes; |
| 125 | for (a_range, b_range) in a_ranges.iter().zip(b_ranges.iter()) { |
| 126 | let ord = compare_field_bytes(a_doc, *a_range, b_doc, *b_range); |
| 127 | if ord != std::cmp::Ordering::Equal { |
| 128 | return ord; |
| 129 | } |
| 130 | } |
| 131 | std::cmp::Ordering::Equal |
| 132 | } |
| 133 | |
| 134 | /// Filter a binary msgpack row against ScanFilter predicates. |
| 135 | /// |
no test coverage detected