From adb65f6bc267e06e7839c6d2ffacd13a1528a757 Mon Sep 17 00:00:00 2001 From: Martin Villagra Date: Sat, 2 Dec 2017 10:22:52 -0300 Subject: [PATCH] Fix find_by when offset is greater than available objects --- src/adapter_test_helpers/sumo_basic_test_helper.erl | 2 ++ src/adapters/sumo_store_mnesia.erl | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/adapter_test_helpers/sumo_basic_test_helper.erl b/src/adapter_test_helpers/sumo_basic_test_helper.erl index 885c957..5c7b922 100644 --- a/src/adapter_test_helpers/sumo_basic_test_helper.erl +++ b/src/adapter_test_helpers/sumo_basic_test_helper.erl @@ -108,6 +108,8 @@ find_by(Config) -> %% Check pagination Results1 = sumo:find_by(Name, [], 3, 1), [_, _, _] = Results1, + [_, _, _, _, _, _, _] = sumo:find_by(Name, [], 1000, 1), + [] = sumo:find_by(Name, [], 1, 1000), %% This test is #177 github issue related [_, _, _, _, _, _, _, _] = sumo:find_by(Name, []), diff --git a/src/adapters/sumo_store_mnesia.erl b/src/adapters/sumo_store_mnesia.erl index 47e759b..83906fc 100644 --- a/src/adapters/sumo_store_mnesia.erl +++ b/src/adapters/sumo_store_mnesia.erl @@ -188,8 +188,10 @@ find_by(DocName, Conditions, [], Limit, Offset, State) -> end, TransactionL = fun() -> case mnesia:select(DocName, MatchSpec, Offset + Limit, read) of - {ManyItems, _Cont} -> + {ManyItems, _Cont} when length(ManyItems) >= Offset -> lists:sublist(ManyItems, Offset + 1, Limit); + {_ManyItems, _Cont} -> + []; '$end_of_table' -> [] end