Sfoglia il codice sorgente

fix(rule SQL): allow expressions as array items

Fixes:
https://github.com/emqx/emqx/issues/12465
https://emqx.atlassian.net/browse/EMQX-11953
Kjell Winblad 1 anno fa
parent
commit
c206ee37e0
3 ha cambiato i file con 27 aggiunte e 2 eliminazioni
  1. 25 0
      apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl
  2. 1 1
      mix.exs
  3. 1 1
      rebar.config

+ 25 - 0
apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl

@@ -102,6 +102,7 @@ groups() ->
             t_sqlparse_array_index_3,
             t_sqlparse_array_index_4,
             t_sqlparse_array_index_5,
+            t_sqlparse_array_with_expressions,
             t_sqlparse_select_matadata_1,
             t_sqlparse_array_range_1,
             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) ->
     %% array with json string payload:
     Sql0 =

+ 1 - 1
mix.exs

@@ -65,7 +65,7 @@ defmodule EMQXUmbrella.MixProject do
       # maybe forbid to fetch quicer
       {:emqtt,
        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"},
       {:system_monitor, github: "ieQu1/system_monitor", tag: "3.0.3"},
       {:telemetry, "1.1.0"},

+ 1 - 1
rebar.config

@@ -91,7 +91,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"}}},
     {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
     {observer_cli, "1.7.1"},
     {system_monitor, {git, "https://github.com/ieQu1/system_monitor", {tag, "3.0.3"}}},