From 8d3d3e523b523e606da62e8aa3be1e7734e85879 Mon Sep 17 00:00:00 2001 From: Paulo Zulato Date: Tue, 23 May 2023 12:16:23 -0300 Subject: [PATCH] fix(oracle): replace 'database' field by 'service name' Fixes https://emqx.atlassian.net/browse/EMQX-9980 --- .../src/emqx_bridge_oracle.app.src | 2 +- .../emqx_bridge_oracle/src/emqx_bridge_oracle.erl | 4 ++-- .../test/emqx_bridge_oracle_SUITE.erl | 6 ++---- apps/emqx_oracle/src/emqx_oracle.erl | 12 +++++++----- apps/emqx_oracle/src/emqx_oracle_schema.erl | 15 +++++++++++---- rel/i18n/emqx_bridge_oracle.hocon | 5 +++++ rel/i18n/emqx_oracle.hocon | 5 +++++ rel/i18n/zh/emqx_bridge_oracle.hocon | 5 +++++ rel/i18n/zh/emqx_oracle.hocon | 5 +++++ 9 files changed, 43 insertions(+), 16 deletions(-) diff --git a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src index 4f81c2110..4a2549f7c 100644 --- a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src +++ b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src @@ -1,6 +1,6 @@ {application, emqx_bridge_oracle, [ {description, "EMQX Enterprise Oracle Database Bridge"}, - {vsn, "0.1.0"}, + {vsn, "0.1.1"}, {registered, []}, {applications, [ kernel, diff --git a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.erl b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.erl index 8a87f02ba..7f384c5e6 100644 --- a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.erl +++ b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.erl @@ -20,7 +20,7 @@ ]). -define(DEFAULT_SQL, << - "insert into t_mqtt_msg(msgid, topic, qos, payload)" + "insert into t_mqtt_msgs(msgid, topic, qos, payload) " "values (${id}, ${topic}, ${qos}, ${payload})" >>). @@ -41,7 +41,7 @@ values(_Method) -> name => <<"foo">>, server => <<"127.0.0.1:1521">>, pool_size => 8, - database => <<"ORCL">>, + service_name => <<"ORCL">>, sid => <<"ORCL">>, username => <<"root">>, password => <<"******">>, diff --git a/apps/emqx_bridge_oracle/test/emqx_bridge_oracle_SUITE.erl b/apps/emqx_bridge_oracle/test/emqx_bridge_oracle_SUITE.erl index b50788277..f280c51d6 100644 --- a/apps/emqx_bridge_oracle/test/emqx_bridge_oracle_SUITE.erl +++ b/apps/emqx_bridge_oracle/test/emqx_bridge_oracle_SUITE.erl @@ -14,7 +14,7 @@ -define(BRIDGE_TYPE_BIN, <<"oracle">>). -define(APPS, [emqx_bridge, emqx_resource, emqx_rule_engine, emqx_oracle, emqx_bridge_oracle]). --define(DATABASE, "XE"). +-define(SID, "XE"). -define(RULE_TOPIC, "mqtt/rule"). % -define(RULE_TOPIC_BIN, <>). @@ -196,7 +196,6 @@ oracle_config(TestCase, _ConnectionType, Config) -> io_lib:format( "bridges.oracle.~s {\n" " enable = true\n" - " database = \"~s\"\n" " sid = \"~s\"\n" " server = \"~s\"\n" " username = \"system\"\n" @@ -215,8 +214,7 @@ oracle_config(TestCase, _ConnectionType, Config) -> "}\n", [ Name, - ?DATABASE, - ?DATABASE, + ?SID, ServerURL, sql_insert_template_for_bridge() ] diff --git a/apps/emqx_oracle/src/emqx_oracle.erl b/apps/emqx_oracle/src/emqx_oracle.erl index 70d9cfbb2..c5d8ecc77 100644 --- a/apps/emqx_oracle/src/emqx_oracle.erl +++ b/apps/emqx_oracle/src/emqx_oracle.erl @@ -75,8 +75,6 @@ on_start( InstId, #{ server := Server, - database := DB, - sid := Sid, username := User } = Config ) -> @@ -91,15 +89,19 @@ on_start( jamdb_oracle_conn:set_max_cursors_number(?MAX_CURSORS), #{hostname := Host, port := Port} = emqx_schema:parse_server(Server, oracle_host_options()), - ServiceName = maps:get(<<"service_name">>, Config, Sid), + Sid = maps:get(sid, Config, ""), + ServiceName = + case maps:get(service_name, Config, undefined) of + undefined -> undefined; + ServiceName0 -> emqx_plugin_libs_rule:str(ServiceName0) + end, Options = [ {host, Host}, {port, Port}, {user, emqx_plugin_libs_rule:str(User)}, {password, jamdb_secret:wrap(maps:get(password, Config, ""))}, {sid, emqx_plugin_libs_rule:str(Sid)}, - {service_name, emqx_plugin_libs_rule:str(ServiceName)}, - {database, DB}, + {service_name, ServiceName}, {pool_size, maps:get(<<"pool_size">>, Config, ?DEFAULT_POOL_SIZE)}, {timeout, ?OPT_TIMEOUT}, {app_name, "EMQX Data To Oracle Database Action"} diff --git a/apps/emqx_oracle/src/emqx_oracle_schema.erl b/apps/emqx_oracle/src/emqx_oracle_schema.erl index cfa74054a..3adde5af3 100644 --- a/apps/emqx_oracle/src/emqx_oracle_schema.erl +++ b/apps/emqx_oracle/src/emqx_oracle_schema.erl @@ -19,9 +19,11 @@ roots() -> [{config, #{type => hoconsc:ref(?REF_MODULE, config)}}]. fields(config) -> - [{server, server()}, {sid, fun sid/1}] ++ - emqx_connector_schema_lib:relational_db_fields() ++ - emqx_connector_schema_lib:prepare_statement_fields(). + Fields = + [{server, server()}, {sid, fun sid/1}, {service_name, fun service_name/1}] ++ + emqx_connector_schema_lib:relational_db_fields() ++ + emqx_connector_schema_lib:prepare_statement_fields(), + proplists:delete(database, Fields). server() -> Meta = #{desc => ?DESC(?REF_MODULE, "server")}, @@ -29,5 +31,10 @@ server() -> sid(type) -> binary(); sid(desc) -> ?DESC(?REF_MODULE, "sid"); -sid(required) -> true; +sid(required) -> false; sid(_) -> undefined. + +service_name(type) -> binary(); +service_name(desc) -> ?DESC(?REF_MODULE, "service_name"); +service_name(required) -> false; +service_name(_) -> undefined. diff --git a/rel/i18n/emqx_bridge_oracle.hocon b/rel/i18n/emqx_bridge_oracle.hocon index 95e0cf4af..c0c8142e6 100644 --- a/rel/i18n/emqx_bridge_oracle.hocon +++ b/rel/i18n/emqx_bridge_oracle.hocon @@ -29,6 +29,11 @@ emqx_bridge_oracle { label = "Oracle Database Sid." } + service_name { + desc = "Service Name for Oracle Database." + label = "Oracle Database Service Name" + } + config_enable { desc = "Enable or disable this bridge" label = "Enable Or Disable Bridge" diff --git a/rel/i18n/emqx_oracle.hocon b/rel/i18n/emqx_oracle.hocon index 58de8e4c7..66224c5ec 100644 --- a/rel/i18n/emqx_oracle.hocon +++ b/rel/i18n/emqx_oracle.hocon @@ -12,4 +12,9 @@ emqx_oracle { label = "Oracle Database Sid" } + service_name { + desc = "Service Name for Oracle Database." + label = "Oracle Database Service Name" + } + } diff --git a/rel/i18n/zh/emqx_bridge_oracle.hocon b/rel/i18n/zh/emqx_bridge_oracle.hocon index 290ac6d07..5f69c6171 100644 --- a/rel/i18n/zh/emqx_bridge_oracle.hocon +++ b/rel/i18n/zh/emqx_bridge_oracle.hocon @@ -28,6 +28,11 @@ emqx_bridge_oracle { label = "Oracle Database Sid" } + service_name { + desc = "Oracle Database 服务名称。" + label = "Oracle Database 服务名称" + } + config_enable { desc = "启用/禁用桥接" label = "启用/禁用桥接" diff --git a/rel/i18n/zh/emqx_oracle.hocon b/rel/i18n/zh/emqx_oracle.hocon index 70c597cb1..06840f201 100644 --- a/rel/i18n/zh/emqx_oracle.hocon +++ b/rel/i18n/zh/emqx_oracle.hocon @@ -12,4 +12,9 @@ emqx_oracle { label = "Oracle Database Sid" } + service_name { + desc = "Oracle Database 服务名称。" + label = "Oracle Database 服务名称" + } + }