diff --git a/apps/emqx_durable_storage/src/emqx_ds_bitmask_keymapper.erl b/apps/emqx_durable_storage/src/emqx_ds_bitmask_keymapper.erl index a67dbc0eb..ee2173000 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_bitmask_keymapper.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_bitmask_keymapper.erl @@ -154,7 +154,8 @@ -opaque keymapper() :: #keymapper{}. --type scalar_range() :: any | {'=', scalar() | infinity} | {'>=', scalar()}. +-type scalar_range() :: + any | {'=', scalar() | infinity} | {'>=', scalar()} | {scalar(), '..', scalar()}. -include("emqx_ds_bitmask.hrl"). @@ -523,7 +524,9 @@ constraints_to_ranges(#keymapper{dim_sizeof = DimSizeof}, Filter) -> ({'=', Val}, _Bitsize) -> {Val, Val}; ({'>=', Val}, Bitsize) -> - {Val, ones(Bitsize)} + {Val, ones(Bitsize)}; + ({Min, '..', Max}, _Bitsize) -> + {Min, Max} end, Filter, DimSizeof diff --git a/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl b/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl index 4dddaff67..129c2500e 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_storage_bitfield_lts.erl @@ -206,7 +206,7 @@ next_until(#s{db = DB, data = CF, keymappers = Keymappers}, It, SafeCutoffTime, %% Make filter: Inequations = [ {'=', TopicIndex}, - {'>=', StartTime} + {StartTime, '..', SafeCutoffTime - 1} | lists:map( fun ('+') ->