pub fn merge_ordered_arrays(
values: &mut [VecDeque<ScalarValue>],
ordering_values: &mut [VecDeque<Vec<ScalarValue>>],
sort_options: &[SortOptions],
) -> Result<(Vec<ScalarValue>, Vec<Vec<ScalarValue>>)>
Expand description
This functions merges values
array (&[Vec<ScalarValue>]
) into single array Vec<ScalarValue>
Merging done according to ordering values stored inside ordering_values
(&[Vec<Vec<ScalarValue>>]
)
Inner Vec<ScalarValue>
in the ordering_values
can be thought as ordering information for the
each ScalarValue
in the values
array.
Desired ordering specified by sort_options
argument (Should have same size with inner Vec<ScalarValue>
of the ordering_values
array).
As an example
values can be [
[1, 2, 3, 4, 5],
[1, 2, 3, 4],
[1, 2, 3, 4, 5, 6],
]
In this case we will be merging three arrays (doesn’t have to be same size)
and produce a merged array with size 15 (sum of 5+4+6)
Merging will be done according to ordering at ordering_values
vector.
As an example ordering_values
can be [
[(1, a), (2, b), (3, b), (4, a), (5, b) ],
[(1, a), (2, b), (3, b), (4, a) ],
[(1, b), (2, c), (3, d), (4, e), (5, a), (6, b) ],
]
For each ScalarValue in the values
we have a corresponding Vec<ScalarValue>
(like timestamp of it)
for the example above sort_options
will have size two, that defines ordering requirement of the merge.
Inner Vec<ScalarValue>
s of the ordering_values
will be compared according sort_options
(Their sizes should match)