fix(rule SQL): allow expressions as array items
Fixes: https://github.com/emqx/emqx/issues/12465 https://emqx.atlassian.net/browse/EMQX-11953
This commit is contained in:
parent
f1e9da9048
commit
c206ee37e0
|
@ -102,6 +102,7 @@ groups() ->
|
||||||
t_sqlparse_array_index_3,
|
t_sqlparse_array_index_3,
|
||||||
t_sqlparse_array_index_4,
|
t_sqlparse_array_index_4,
|
||||||
t_sqlparse_array_index_5,
|
t_sqlparse_array_index_5,
|
||||||
|
t_sqlparse_array_with_expressions,
|
||||||
t_sqlparse_select_matadata_1,
|
t_sqlparse_select_matadata_1,
|
||||||
t_sqlparse_array_range_1,
|
t_sqlparse_array_range_1,
|
||||||
t_sqlparse_array_range_2,
|
t_sqlparse_array_range_2,
|
||||||
|
@ -3040,6 +3041,30 @@ t_sqlparse_array_index_5(_Config) ->
|
||||||
)
|
)
|
||||||
).
|
).
|
||||||
|
|
||||||
|
t_sqlparse_array_with_expressions(_Config) ->
|
||||||
|
Sql =
|
||||||
|
"select "
|
||||||
|
" [21 + 21, abs(-abs(-2)), [1 + 1], 4] "
|
||||||
|
"from \"t/#\" ",
|
||||||
|
{ok, Res} =
|
||||||
|
emqx_rule_sqltester:test(
|
||||||
|
#{
|
||||||
|
sql => Sql,
|
||||||
|
context => #{
|
||||||
|
payload => <<"">>,
|
||||||
|
topic => <<"t/a">>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
),
|
||||||
|
?assert(
|
||||||
|
lists:any(
|
||||||
|
fun({_K, V}) ->
|
||||||
|
V =:= [42, 2, [2], 4]
|
||||||
|
end,
|
||||||
|
maps:to_list(Res)
|
||||||
|
)
|
||||||
|
).
|
||||||
|
|
||||||
t_sqlparse_select_matadata_1(_Config) ->
|
t_sqlparse_select_matadata_1(_Config) ->
|
||||||
%% array with json string payload:
|
%% array with json string payload:
|
||||||
Sql0 =
|
Sql0 =
|
||||||
|
|
2
mix.exs
2
mix.exs
|
@ -65,7 +65,7 @@ defmodule EMQXUmbrella.MixProject do
|
||||||
# maybe forbid to fetch quicer
|
# maybe forbid to fetch quicer
|
||||||
{:emqtt,
|
{:emqtt,
|
||||||
github: "emqx/emqtt", tag: "1.10.1", override: true, system_env: maybe_no_quic_env()},
|
github: "emqx/emqtt", tag: "1.10.1", override: true, system_env: maybe_no_quic_env()},
|
||||||
{:rulesql, github: "emqx/rulesql", tag: "0.1.7"},
|
{:rulesql, github: "emqx/rulesql", tag: "0.1.8"},
|
||||||
{:observer_cli, "1.7.1"},
|
{:observer_cli, "1.7.1"},
|
||||||
{:system_monitor, github: "ieQu1/system_monitor", tag: "3.0.3"},
|
{:system_monitor, github: "ieQu1/system_monitor", tag: "3.0.3"},
|
||||||
{:telemetry, "1.1.0"},
|
{:telemetry, "1.1.0"},
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
{replayq, {git, "https://github.com/emqx/replayq.git", {tag, "0.3.7"}}},
|
{replayq, {git, "https://github.com/emqx/replayq.git", {tag, "0.3.7"}}},
|
||||||
{pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}},
|
{pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}},
|
||||||
{emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.10.1"}}},
|
{emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.10.1"}}},
|
||||||
{rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.7"}}},
|
{rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.8"}}},
|
||||||
% NOTE: depends on recon 2.5.x
|
% NOTE: depends on recon 2.5.x
|
||||||
{observer_cli, "1.7.1"},
|
{observer_cli, "1.7.1"},
|
||||||
{system_monitor, {git, "https://github.com/ieQu1/system_monitor", {tag, "3.0.3"}}},
|
{system_monitor, {git, "https://github.com/ieQu1/system_monitor", {tag, "3.0.3"}}},
|
||||||
|
|
Loading…
Reference in New Issue