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,
|
CheckPresence,
|
||||||
SnapPreFold),
|
SnapPreFold),
|
||||||
State};
|
State};
|
||||||
{foldheads_bybucket, Tag, Bucket, FoldHeadsFun,
|
{foldheads_bybucket, Tag, Bucket, KeyRange, FoldHeadsFun,
|
||||||
CheckPresence, SnapPreFold} ->
|
CheckPresence, SnapPreFold} ->
|
||||||
{reply,
|
{reply,
|
||||||
foldheads_bybucket(State, Tag, Bucket,
|
foldheads_bybucket(State, Tag, Bucket,
|
||||||
|
KeyRange,
|
||||||
FoldHeadsFun,
|
FoldHeadsFun,
|
||||||
CheckPresence,
|
CheckPresence,
|
||||||
SnapPreFold),
|
SnapPreFold),
|
||||||
|
@ -1000,9 +1001,20 @@ foldobjects_bybucket(State, Tag, Bucket, FoldObjectsFun) ->
|
||||||
foldobjects(State, Tag, StartKey, EndKey, FoldObjectsFun,
|
foldobjects(State, Tag, StartKey, EndKey, FoldObjectsFun,
|
||||||
false, true).
|
false, true).
|
||||||
|
|
||||||
foldheads_bybucket(State, Tag, Bucket, FoldHeadsFun, CheckPresence, SnapPreFold) ->
|
foldheads_bybucket(State, Tag, Bucket, KeyRange, FoldHeadsFun,
|
||||||
StartKey = leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
CheckPresence, SnapPreFold) ->
|
||||||
EndKey = leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
{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,
|
foldobjects(State, Tag, StartKey, EndKey, FoldHeadsFun,
|
||||||
{true, CheckPresence}, SnapPreFold).
|
{true, CheckPresence}, SnapPreFold).
|
||||||
|
|
||||||
|
@ -1876,6 +1888,7 @@ foldobjects_vs_foldheads_bybucket_testto() ->
|
||||||
{foldheads_bybucket,
|
{foldheads_bybucket,
|
||||||
?STD_TAG,
|
?STD_TAG,
|
||||||
"BucketA",
|
"BucketA",
|
||||||
|
all,
|
||||||
FoldHeadsFun,
|
FoldHeadsFun,
|
||||||
true,
|
true,
|
||||||
true}),
|
true}),
|
||||||
|
@ -1885,15 +1898,42 @@ foldobjects_vs_foldheads_bybucket_testto() ->
|
||||||
{foldheads_bybucket,
|
{foldheads_bybucket,
|
||||||
?STD_TAG,
|
?STD_TAG,
|
||||||
"BucketB",
|
"BucketB",
|
||||||
|
all,
|
||||||
FoldHeadsFun,
|
FoldHeadsFun,
|
||||||
false,
|
false,
|
||||||
false}),
|
false}),
|
||||||
KeyHashList2B = HTFolder2B(),
|
KeyHashList2B = HTFolder2B(),
|
||||||
|
|
||||||
?assertMatch(true,
|
?assertMatch(true,
|
||||||
lists:usort(KeyHashList1A) == lists:usort(KeyHashList2A)),
|
lists:usort(KeyHashList1A) == lists:usort(KeyHashList2A)),
|
||||||
?assertMatch(true,
|
?assertMatch(true,
|
||||||
lists:usort(KeyHashList1B) == lists:usort(KeyHashList2B)),
|
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),
|
ok = book_close(Bookie1),
|
||||||
reset_filestructure().
|
reset_filestructure().
|
||||||
|
|
||||||
|
|
|
@ -129,6 +129,7 @@ many_put_compare(_Config) ->
|
||||||
FoldQ0 = {foldheads_bybucket,
|
FoldQ0 = {foldheads_bybucket,
|
||||||
o_rkv,
|
o_rkv,
|
||||||
"Bucket",
|
"Bucket",
|
||||||
|
all,
|
||||||
{FoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
{FoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
||||||
false, true},
|
false, true},
|
||||||
{async, TreeAObjFolder0} =
|
{async, TreeAObjFolder0} =
|
||||||
|
@ -143,6 +144,7 @@ many_put_compare(_Config) ->
|
||||||
FoldQ1 = {foldheads_bybucket,
|
FoldQ1 = {foldheads_bybucket,
|
||||||
o_rkv,
|
o_rkv,
|
||||||
"Bucket",
|
"Bucket",
|
||||||
|
all,
|
||||||
{FoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
{FoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
||||||
true, true},
|
true, true},
|
||||||
{async, TreeAObjFolder1} =
|
{async, TreeAObjFolder1} =
|
||||||
|
@ -170,6 +172,7 @@ many_put_compare(_Config) ->
|
||||||
AltFoldQ0 = {foldheads_bybucket,
|
AltFoldQ0 = {foldheads_bybucket,
|
||||||
o_rkv,
|
o_rkv,
|
||||||
"Bucket",
|
"Bucket",
|
||||||
|
all,
|
||||||
{AltFoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
{AltFoldObjectsFun, leveled_tictac:new_tree(0, TreeSize)},
|
||||||
false,
|
false,
|
||||||
true},
|
true},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue