Add key range to fold_heads queries
This commit is contained in:
parent
7912742a84
commit
0c5f5cdb65
2 changed files with 47 additions and 4 deletions
|
@ -604,10 +604,11 @@ handle_call({return_folder, FolderType}, _From, State) ->
|
|||
CheckPresence,
|
||||
SnapPreFold),
|
||||
State};
|
||||
{foldheads_bybucket, Tag, Bucket, FoldHeadsFun,
|
||||
{foldheads_bybucket, Tag, Bucket, KeyRange, FoldHeadsFun,
|
||||
CheckPresence, SnapPreFold} ->
|
||||
{reply,
|
||||
foldheads_bybucket(State, Tag, Bucket,
|
||||
KeyRange,
|
||||
FoldHeadsFun,
|
||||
CheckPresence,
|
||||
SnapPreFold),
|
||||
|
@ -1000,9 +1001,20 @@ foldobjects_bybucket(State, Tag, Bucket, FoldObjectsFun) ->
|
|||
foldobjects(State, Tag, StartKey, EndKey, FoldObjectsFun,
|
||||
false, true).
|
||||
|
||||
foldheads_bybucket(State, Tag, Bucket, FoldHeadsFun, CheckPresence, SnapPreFold) ->
|
||||
StartKey = leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
||||
EndKey = leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
||||
foldheads_bybucket(State, Tag, Bucket, KeyRange, FoldHeadsFun,
|
||||
CheckPresence, SnapPreFold) ->
|
||||
{StartKey, EndKey} =
|
||||
case KeyRange of
|
||||
all ->
|
||||
{leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
||||
leveled_codec:to_ledgerkey(Bucket, null, Tag)};
|
||||
{StartTerm, <<"$all">>} ->
|
||||
{leveled_codec:to_ledgerkey(Bucket, StartTerm, Tag),
|
||||
leveled_codec:to_ledgerkey(Bucket, null, Tag)};
|
||||
{StartTerm, EndTerm} ->
|
||||
{leveled_codec:to_ledgerkey(Bucket, StartTerm, Tag),
|
||||
leveled_codec:to_ledgerkey(Bucket, EndTerm, Tag)}
|
||||
end,
|
||||
foldobjects(State, Tag, StartKey, EndKey, FoldHeadsFun,
|
||||
{true, CheckPresence}, SnapPreFold).
|
||||
|
||||
|
@ -1876,6 +1888,7 @@ foldobjects_vs_foldheads_bybucket_testto() ->
|
|||
{foldheads_bybucket,
|
||||
?STD_TAG,
|
||||
"BucketA",
|
||||
all,
|
||||
FoldHeadsFun,
|
||||
true,
|
||||
true}),
|
||||
|
@ -1885,15 +1898,42 @@ foldobjects_vs_foldheads_bybucket_testto() ->
|
|||
{foldheads_bybucket,
|
||||
?STD_TAG,
|
||||
"BucketB",
|
||||
all,
|
||||
FoldHeadsFun,
|
||||
false,
|
||||
false}),
|
||||
KeyHashList2B = HTFolder2B(),
|
||||
|
||||
?assertMatch(true,
|
||||
lists:usort(KeyHashList1A) == lists:usort(KeyHashList2A)),
|
||||
?assertMatch(true,
|
||||
lists:usort(KeyHashList1B) == lists:usort(KeyHashList2B)),
|
||||
|
||||
{async, HTFolder2C} =
|
||||
book_returnfolder(Bookie1,
|
||||
{foldheads_bybucket,
|
||||
?STD_TAG,
|
||||
"BucketB",
|
||||
{"Key", <<"$all">>},
|
||||
FoldHeadsFun,
|
||||
false,
|
||||
false}),
|
||||
KeyHashList2C = HTFolder2C(),
|
||||
{async, HTFolder2D} =
|
||||
book_returnfolder(Bookie1,
|
||||
{foldheads_bybucket,
|
||||
?STD_TAG,
|
||||
"BucketB",
|
||||
{"Key", "Keyzzzzz"},
|
||||
FoldHeadsFun,
|
||||
false,
|
||||
false}),
|
||||
KeyHashList2D = HTFolder2D(),
|
||||
?assertMatch(true,
|
||||
lists:usort(KeyHashList2B) == lists:usort(KeyHashList2C)),
|
||||
?assertMatch(true,
|
||||
lists:usort(KeyHashList2B) == lists:usort(KeyHashList2D)),
|
||||
|
||||
ok = book_close(Bookie1),
|
||||
reset_filestructure().
|
||||
|
||||
|
|
|
@ -129,6 +129,7 @@ many_put_compare(_Config) ->
|
|||
FoldQ0 = {foldheads_bybucket,
|
||||
o_rkv,
|
||||
"Bucket",
|
||||
all,
|
||||
{FoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
||||
false, true},
|
||||
{async, TreeAObjFolder0} =
|
||||
|
@ -143,6 +144,7 @@ many_put_compare(_Config) ->
|
|||
FoldQ1 = {foldheads_bybucket,
|
||||
o_rkv,
|
||||
"Bucket",
|
||||
all,
|
||||
{FoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
||||
true, true},
|
||||
{async, TreeAObjFolder1} =
|
||||
|
@ -170,6 +172,7 @@ many_put_compare(_Config) ->
|
|||
AltFoldQ0 = {foldheads_bybucket,
|
||||
o_rkv,
|
||||
"Bucket",
|
||||
all,
|
||||
{AltFoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
||||
false,
|
||||
true},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue