Merge pull request #12657 from kjellwinblad/kjell/rule_engine/fix/fun_calls_as_array_items/EMQX-11953
fix(rule SQL): allow expressions as array items
This commit is contained in:
commit
6054499607
|
@ -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 =
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
The rule engine SQL-based language previously did not allow putting any expressions as array elements in array literals (only constants and variable references were allowed). This has now been fixed so that one can use any expressions as array elements.
|
||||||
|
|
||||||
|
The following is now permitted, for example:
|
||||||
|
|
||||||
|
```
|
||||||
|
select
|
||||||
|
[21 + 21, abs(-abs(-2)), [1 + 1], 4] as my_array
|
||||||
|
from "t/#"
|
||||||
|
```
|
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