fix(rule): compare to null variables should return false

This commit is contained in:
Shawn 2022-01-06 20:29:35 +08:00
parent b7bcb37eab
commit fbeba39f0d
2 changed files with 54 additions and 36 deletions

View File

@ -3,76 +3,90 @@
[ [
{"4.3.6", {"4.3.6",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} [ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.5", {"4.3.5",
[ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.4", {"4.3.4",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.3", {"4.3.3",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.2", {"4.3.2",
[ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.1", {"4.3.1",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.0", {"4.3.0",
[ {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{<<".*">>, []} {<<".*">>, []}
], ],
[ [
{"4.3.6", {"4.3.6",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} [ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.5", {"4.3.5",
[ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.4", {"4.3.4",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.3", {"4.3.3",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.2", {"4.3.2",
[ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.1", {"4.3.1",
[ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{"4.3.0", {"4.3.0",
[ {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, [ {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}
, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}
]}, ]},
{<<".*">>, []} {<<".*">>, []}
] ]

View File

@ -204,6 +204,10 @@ match_conditions({}, _Data) ->
true. true.
%% comparing numbers against strings %% comparing numbers against strings
compare(Op, undefined, undefined) ->
do_compare(Op, undefined, undefined);
compare(_Op, L, R) when L == undefined; R == undefined ->
false;
compare(Op, L, R) when is_number(L), is_binary(R) -> compare(Op, L, R) when is_number(L), is_binary(R) ->
do_compare(Op, L, number(R)); do_compare(Op, L, number(R));
compare(Op, L, R) when is_binary(L), is_number(R) -> compare(Op, L, R) when is_binary(L), is_number(R) ->