From ac41f497b4addcb1fd5f13971cc485f18b2028ff Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 15 Sep 2023 16:04:21 +0200 Subject: [PATCH 1/2] feat: add bytesize rule sql function --- apps/emqx_rule_engine/src/emqx_rule_funcs.erl | 4 ++++ apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/apps/emqx_rule_engine/src/emqx_rule_funcs.erl b/apps/emqx_rule_engine/src/emqx_rule_funcs.erl index edaa5f25f..37797cb4f 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_funcs.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_funcs.erl @@ -89,6 +89,7 @@ bitsl/2, bitsr/2, bitsize/1, + bytesize/1, subbits/2, subbits/3, subbits/6 @@ -405,6 +406,9 @@ find_topic_filter(Filter, TopicFilters, Func) -> null() -> undefined. +bytesize(IoList) -> + erlang:iolist_size(IoList). + %%------------------------------------------------------------------------------ %% Arithmetic Funcs %%------------------------------------------------------------------------------ diff --git a/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl index 65be15405..93b35fbc4 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl @@ -759,6 +759,10 @@ t_bitsize(_) -> ?assertEqual(8, apply_func(bitsize, [<<"a">>])), ?assertEqual(4, apply_func(bitsize, [<<15:4>>])). +t_bytesize(_) -> + ?assertEqual(1, apply_func(bytesize, [<<"a">>])), + ?assertEqual(0, apply_func(bytesize, [<<>>])). + t_subbits(_) -> ?assertEqual(1, apply_func(subbits, [<<255:8>>, 1])), ?assertEqual(3, apply_func(subbits, [<<255:8>>, 2])), From 062854eff7cbe4a804a53b8933a16b6dad164732 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 15 Sep 2023 16:07:23 +0200 Subject: [PATCH 2/2] docs: add changelog --- changes/ce/feat-11620.en.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/ce/feat-11620.en.md diff --git a/changes/ce/feat-11620.en.md b/changes/ce/feat-11620.en.md new file mode 100644 index 000000000..3953d337b --- /dev/null +++ b/changes/ce/feat-11620.en.md @@ -0,0 +1 @@ +Add a new rule-engine SQL function `bytesize` to get the size of a byte-string. e.g. ``SELECT * FROM "t/#" WHERE bytesize(payload) > 10`