From 4b7a5bbf536396c39add1415f3f3f34fbdf702dc Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Thu, 21 Apr 2022 21:26:35 +0800 Subject: [PATCH] fix: bad empty map --- apps/emqx_authz/src/emqx_authz_mysql.erl | 4 ++-- .../src/emqx_connector_mysql.erl | 22 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/apps/emqx_authz/src/emqx_authz_mysql.erl b/apps/emqx_authz/src/emqx_authz_mysql.erl index db6acb347..1bdf511a5 100644 --- a/apps/emqx_authz/src/emqx_authz_mysql.erl +++ b/apps/emqx_authz/src/emqx_authz_mysql.erl @@ -51,7 +51,7 @@ description() -> init(#{query := SQL} = Source0) -> {PrepareSQL, TmplToken} = emqx_authz_utils:parse_sql(SQL, '?', ?PLACEHOLDERS), - Source = Source0#{prepare_statement => #{?MODULE => PrepareSQL}}, + Source = Source0#{prepare_statement => #{?PREPARE_KEY => PrepareSQL}}, case emqx_authz_utils:create_resource(emqx_connector_mysql, Source) of {error, Reason} -> error({load_config_error, Reason}); @@ -74,7 +74,7 @@ authorize( } ) -> RenderParams = emqx_authz_utils:render_sql_params(TmplToken, Client), - case emqx_resource:query(ResourceID, {prepared_query, ?MODULE, RenderParams}) of + case emqx_resource:query(ResourceID, {prepared_query, ?PREPARE_KEY, RenderParams}) of {ok, _Columns, []} -> nomatch; {ok, Columns, Rows} -> diff --git a/apps/emqx_connector/src/emqx_connector_mysql.erl b/apps/emqx_connector/src/emqx_connector_mysql.erl index b8ca93104..f44e92413 100644 --- a/apps/emqx_connector/src/emqx_connector_mysql.erl +++ b/apps/emqx_connector/src/emqx_connector_mysql.erl @@ -86,6 +86,7 @@ on_start(InstId, #{server := {Host, Port}, {pool_size, PoolSize}], PoolName = emqx_plugin_libs_pool:pool_name(InstId), Prepares = maps:get(prepare_statement, Config, #{}), + io:format("Prepares ~p~n", [Prepares]), State = init_prepare(#{poolname => PoolName, prepare_statement => Prepares}), case emqx_plugin_libs_pool:start_pool(PoolName, ?MODULE, Options ++ SslOpts) of ok -> {ok, State}; @@ -181,17 +182,20 @@ connect(Options) -> to_server(Str) -> emqx_connector_schema_lib:parse_server(Str, ?MYSQL_HOST_OPTIONS). -init_prepare(State = #{prepare_statement := #{}}) -> - State; init_prepare(State = #{prepare_statement := Prepares, poolname := PoolName}) -> - case prepare_sql(Prepares, PoolName) of - ok -> + case maps:size(Prepares) of + 0 -> State; - {error, Reason} -> - LogMeta = #{msg => <<"MySQL init prepare statement failed">>, reason => Reason}, - ?SLOG(error, LogMeta), - %% mark the prepare_statement as failed - State#{prepare_statement => {error, Prepares}} + _ -> + case prepare_sql(Prepares, PoolName) of + ok -> + State; + {error, Reason} -> + LogMeta = #{msg => <<"MySQL init prepare statement failed">>, reason => Reason}, + ?SLOG(error, LogMeta), + %% mark the prepare_statement as failed + State#{prepare_statement => {error, Prepares}} + end end. prepare_sql(Prepares, PoolName) when is_map(Prepares) ->