Prechádzať zdrojové kódy

fix(oracle): replace 'database' field by 'service name'

Fixes https://emqx.atlassian.net/browse/EMQX-9980
Paulo Zulato 2 rokov pred
rodič
commit
8d3d3e523b

+ 1 - 1
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,

+ 2 - 2
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 => <<"******">>,

+ 2 - 4
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, <<?RULE_TOPIC>>).
 
@@ -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()
             ]

+ 7 - 5
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"}

+ 11 - 4
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.

+ 5 - 0
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"

+ 5 - 0
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"
+  }
+
 }

+ 5 - 0
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 = "启用/禁用桥接"

+ 5 - 0
rel/i18n/zh/emqx_oracle.hocon

@@ -12,4 +12,9 @@ emqx_oracle {
     label = "Oracle Database Sid"
   }
 
+  service_name {
+    desc = "Oracle Database 服务名称。"
+    label = "Oracle Database 服务名称"
+  }
+
 }