Merge remote-tracking branch 'origin/master' into release-51

This commit is contained in:
Zaiming (Stone) Shi 2023-05-30 13:49:37 +02:00
commit 4f27913dd8
5 changed files with 31 additions and 4 deletions

View File

@ -2,8 +2,7 @@
{application, emqx, [
{id, "emqx"},
{description, "EMQX Core"},
% strict semver, bump manually!
{vsn, "5.0.27"},
{vsn, "5.1.0"},
{modules, []},
{registered, []},
{applications, [

View File

@ -1,6 +1,6 @@
{application, emqx_ft, [
{description, "EMQX file transfer over MQTT"},
{vsn, "0.1.1"},
{vsn, "0.1.2"},
{registered, []},
{mod, {emqx_ft_app, []}},
{applications, [

View File

@ -228,7 +228,9 @@
format_date/3,
format_date/4,
date_to_unix_ts/3,
date_to_unix_ts/4
date_to_unix_ts/4,
timezone_to_second/1,
timezone_to_offset_seconds/1
]).
%% MongoDB specific date functions. These functions return a date tuple. The
@ -1104,6 +1106,12 @@ date_to_unix_ts(TimeUnit, Offset, FormatString, InputString) ->
OffsetDelta = erlang:convert_time_unit(OffsetSecond, second, Unit),
date_to_unix_ts(Unit, FormatString, InputString) - OffsetDelta.
timezone_to_second(TimeZone) ->
timezone_to_offset_seconds(TimeZone).
timezone_to_offset_seconds(TimeZone) ->
emqx_calendar:offset_second(TimeZone).
%% @doc This is for sql funcs that should be handled in the specific modules.
%% Here the emqx_rule_funcs module acts as a proxy, forwarding
%% the function handling to the worker module.

View File

@ -1012,6 +1012,25 @@ prop_format_date_fun() ->
Args3DTUS = [<<"second">>, <<"+04:00">>, <<"--%m--%d--%Y---%H:%M:%S">>, Formatters3],
Second == apply_func(date_to_unix_ts, Args3DTUS).
t_timezone_to_offset_seconds(_) ->
timezone_to_offset_seconds_helper(timezone_to_offset_seconds),
%% The timezone_to_second function is kept for compatibility with 4.X.
timezone_to_offset_seconds_helper(timezone_to_second).
timezone_to_offset_seconds_helper(FunctionName) ->
?assertEqual(120 * 60, apply_func(FunctionName, [<<"+02:00:00">>])),
?assertEqual(-120 * 60, apply_func(FunctionName, [<<"-02:00:00">>])),
?assertEqual(102, apply_func(FunctionName, [<<"+00:01:42">>])),
?assertEqual(0, apply_func(FunctionName, [<<"z">>])),
?assertEqual(0, apply_func(FunctionName, [<<"Z">>])),
?assertEqual(42, apply_func(FunctionName, [42])),
?assertEqual(0, apply_func(FunctionName, [undefined])),
%% Check that the following does not crash
apply_func(FunctionName, [<<"local">>]),
apply_func(FunctionName, ["local"]),
apply_func(FunctionName, [local]),
ok.
%%------------------------------------------------------------------------------
%% Utility functions
%%------------------------------------------------------------------------------

View File

@ -0,0 +1 @@
A new utility function timezone_to_offset_seconds/1 has been added to the rule engine SQL language. This function converts a timezone string (for example, "+02:00", "Z" and "local") to the corresponding offset in seconds.