You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2026/09/22 21:53:29 UTC
(couchdb) 01/01: fix nouveau string sorting order
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch nouveau-string-sorting
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 182b4f72f2e102d572302b44e66d560662203d6d
Author: Robert Newson <rn...@apache.org>
AuthorDate: Tue Sep 22 22:52:57 2026 +0100
fix nouveau string sorting order
Match Java's string sorting order (lexicographical)
---
src/nouveau/src/nouveau_fabric_search.erl | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/nouveau/src/nouveau_fabric_search.erl b/src/nouveau/src/nouveau_fabric_search.erl
index 066171465..f954a8ac6 100644
--- a/src/nouveau/src/nouveau_fabric_search.erl
+++ b/src/nouveau/src/nouveau_fabric_search.erl
@@ -203,21 +203,23 @@ compare_order(null, As, Bs) ->
%% server-side adds _id on the end of sort order if not present
compare_order([], [A], [B]) ->
couch_ejson_compare:less(convert_item(A), convert_item(B)) < 1;
+compare_order(Order, [#{} = A | ARest], [#{} = B | BRest]) ->
+ compare_order(Order, [convert_item(A) | ARest], [convert_item(B) | BRest]);
%% reverse order specified
compare_order([<<"-", _/binary>> | SortRest], [A | ARest], [B | BRest]) ->
- case couch_ejson_compare:less(convert_item(B), convert_item(A)) of
- 0 ->
+ if
+ A == B ->
compare_order(SortRest, ARest, BRest);
- Less ->
- Less < 1
+ true ->
+ B < A
end;
%% forward order specified
compare_order([_ | SortRest], [A | ARest], [B | BRest]) ->
- case couch_ejson_compare:less(convert_item(A), convert_item(B)) of
- 0 ->
+ if
+ A == B ->
compare_order(SortRest, ARest, BRest);
- Less ->
- Less < 1
+ true ->
+ A < B
end.
convert_item(Item) ->