Merge pull request #7336 from terry-xiaoyu/float_precision_10
fix(rules): enlarge precisions of floats to maximum 17 decimal places.
This commit is contained in:
commit
3a89a6a1fe
|
@ -29,6 +29,9 @@ File format:
|
||||||
* Changed systemd service restart delay from 10 seconds to 60 seconds.
|
* Changed systemd service restart delay from 10 seconds to 60 seconds.
|
||||||
* MQTT-SN gateway supports initiative to synchronize registered topics after session resumed. [#7300]
|
* MQTT-SN gateway supports initiative to synchronize registered topics after session resumed. [#7300]
|
||||||
* Add load control app for future development.
|
* Add load control app for future development.
|
||||||
|
* Change the precision of float to 17 digits after the decimal point when formatting a
|
||||||
|
float using payload templates of rule actions. The old precision is 10 digits before
|
||||||
|
this change.
|
||||||
|
|
||||||
### Bug fixes
|
### Bug fixes
|
||||||
|
|
||||||
|
|
|
@ -1,29 +1,35 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
{VSN,
|
{VSN,
|
||||||
[{"4.3.7",[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
[{"4.3.7",
|
||||||
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.6",
|
{"4.3.6",
|
||||||
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{update,emqx_rule_metrics,{advanced,["4.3.6"]}},
|
{update,emqx_rule_metrics,{advanced,["4.3.6"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.5",
|
{"4.3.5",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.5"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.5"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.4",
|
{"4.3.4",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.4"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.4"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.3",
|
{"4.3.3",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.3"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.3"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
||||||
|
@ -31,7 +37,8 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.2",
|
{"4.3.2",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.2"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.2"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
|
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
|
||||||
|
@ -40,7 +47,8 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.1",
|
{"4.3.1",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.1"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.1"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
|
@ -49,7 +57,8 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.0",
|
{"4.3.0",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.0"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.0"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
|
@ -59,30 +68,36 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}],
|
{<<".*">>,[]}],
|
||||||
[{"4.3.7",[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
[{"4.3.7",
|
||||||
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.6",
|
{"4.3.6",
|
||||||
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{update,emqx_rule_metrics,{advanced,["4.3.6"]}},
|
{update,emqx_rule_metrics,{advanced,["4.3.6"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.5",
|
{"4.3.5",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.5"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.5"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.4",
|
{"4.3.4",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.4"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.4"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.3",
|
{"4.3.3",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.3"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.3"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
||||||
|
@ -90,7 +105,8 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.2",
|
{"4.3.2",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.2"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.2"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
|
{apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
|
||||||
|
@ -99,7 +115,8 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.1",
|
{"4.3.1",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.1"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.1"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
|
@ -108,7 +125,8 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.0",
|
{"4.3.0",
|
||||||
[{update,emqx_rule_metrics,{advanced,["4.3.0"]}},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{update,emqx_rule_metrics,{advanced,["4.3.0"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
|
|
|
@ -60,8 +60,8 @@
|
||||||
]}).
|
]}).
|
||||||
|
|
||||||
-define(EX_PLACE_HOLDER, "(\\$\\{[a-zA-Z0-9\\._]+\\})").
|
-define(EX_PLACE_HOLDER, "(\\$\\{[a-zA-Z0-9\\._]+\\})").
|
||||||
|
|
||||||
-define(EX_WITHE_CHARS, "\\s"). %% Space and CRLF
|
-define(EX_WITHE_CHARS, "\\s"). %% Space and CRLF
|
||||||
|
-define(FLOAT_PRECISION, 17).
|
||||||
|
|
||||||
-type(uri_string() :: iodata()).
|
-type(uri_string() :: iodata()).
|
||||||
|
|
||||||
|
@ -336,12 +336,12 @@ bool(Bool) -> error({invalid_boolean, Bool}).
|
||||||
number_to_binary(Int) when is_integer(Int) ->
|
number_to_binary(Int) when is_integer(Int) ->
|
||||||
integer_to_binary(Int);
|
integer_to_binary(Int);
|
||||||
number_to_binary(Float) when is_float(Float) ->
|
number_to_binary(Float) when is_float(Float) ->
|
||||||
float_to_binary(Float, [{decimals, 10}, compact]).
|
float_to_binary(Float, [{decimals, ?FLOAT_PRECISION}, compact]).
|
||||||
|
|
||||||
number_to_list(Int) when is_integer(Int) ->
|
number_to_list(Int) when is_integer(Int) ->
|
||||||
integer_to_list(Int);
|
integer_to_list(Int);
|
||||||
number_to_list(Float) when is_float(Float) ->
|
number_to_list(Float) when is_float(Float) ->
|
||||||
float_to_list(Float, [{decimals, 10}, compact]).
|
float_to_list(Float, [{decimals, ?FLOAT_PRECISION}, compact]).
|
||||||
|
|
||||||
parse_nested(Attr) ->
|
parse_nested(Attr) ->
|
||||||
case string:split(Attr, <<".">>, all) of
|
case string:split(Attr, <<".">>, all) of
|
||||||
|
|
Loading…
Reference in New Issue