rowvector_digit_sort — Performs a stable "digit" sort of a given
array of arrays.
inout data vector ,
in key_idx_in_row integer ,
in sort_ascending integer
The function gets an vector that contains uniform arrays
("rows") as items, such as a result set produced by exec (). One element of each row is a key of
sorting; it is identified by its zero-based position within the
row, key_idx_in_row (if the
data vector is a result set
then N-th elements of all rows are from N-th column of the result
set). The sorting procedure edits data and reorders rows in such a way
that their keys become ordered ascending or descending, depending
on sort_ascending flag.
The performed sorting is stable. It means that it will not
permutate rows in vain: it will preserve the relative order of any
two rows that have equal keys. Using this property, one may sort a
result set by a "secondary sorting columns", starting with less
significant and then by "primary sorting column". E.g., if each row
contain elements for country code and province code then it is
possible to make two-column sorting by sorting first by province
and then by country; that will work even if province codes are not
globally unique (say, if they're enumerated from 1 in each
This function supports only integer values of sorting keys.
A vector of rows to sort.
Zero-based position of key element in row, should be nonnegative
and less than the length of each row.
Direction of sorting, nonzero for ascending sort, zero for
The function returns the length of the data vector.