Skip to content

Commit

Permalink
[branch-2.0](function) fix wrong result when convert_tz is out of bou…
Browse files Browse the repository at this point in the history
  • Loading branch information
zclllyybb authored and caokaihua1 committed Aug 26, 2024
1 parent 39a197e commit 9287d3a
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 7 deletions.
1 change: 1 addition & 0 deletions be/src/vec/functions/function_cast.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
#include "vec/functions/function.h"
#include "vec/functions/function_convert_tz.h"
#include "vec/functions/function_helpers.h"
#include "vec/io/io_helper.h"
#include "vec/io/reader_buffer.h"
#include "vec/runtime/vdatetime_value.h"

Expand Down
14 changes: 7 additions & 7 deletions be/src/vec/functions/function_convert_tz.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,15 @@
#pragma once

#include <cctz/time_zone.h>
#include <stddef.h>
#include <stdint.h>

#include <cstddef>
#include <cstdint>
#include <map>
#include <memory>
#include <string>
#include <type_traits>
#include <utility>

#include "common/status.h"
#include "runtime/exec_env.h"
#include "runtime/runtime_state.h"
#include "udf/udf.h"
#include "util/binary_cast.hpp"
#include "util/timezone_utils.h"
Expand All @@ -53,7 +49,6 @@
#include "vec/data_types/data_type_string.h"
#include "vec/data_types/data_type_time_v2.h"
#include "vec/functions/function.h"
#include "vec/io/io_helper.h"
#include "vec/runtime/vdatetime_value.h"
namespace doris::vectorized {

Expand Down Expand Up @@ -117,7 +112,6 @@ struct ConvertTZImpl {
result_column->insert_default();
return;
}

if (!TimezoneUtils::find_cctz_time_zone(to_tz_name, to_tz)) {
result_null_map[index_now] = true;
result_column->insert_default();
Expand All @@ -143,6 +137,12 @@ struct ConvertTZImpl {
ts_value2.from_unixtime(timestamp, to_tz);
}

if (!ts_value2.is_valid_date()) [[unlikely]] {
result_null_map[index_now] = true;
result_column->insert_default();
return;
}

result_column->insert(binary_cast<ReturnDateType, ReturnNativeType>(ts_value2));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@
-- !sql --
\N

-- !lower_bound --
\N

-- !lower_bound --
0000-01-01T00:00

-- !sql_convert_tz_null --
\N
\N
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ suite("test_date_function") {
qt_sql """ SELECT convert_tz('2022-2-29 13:21:03', '+08:00', 'America/London') result; """
qt_sql """ SELECT convert_tz('2022-02-29 13:21:03', '+08:00', 'America/London') result; """
qt_sql """ SELECT convert_tz('1900-00-00 13:21:03', '+08:00', 'America/London') result; """
qt_lower_bound """ select convert_tz('0000-01-01 00:00:00', '+08:00', '-02:00'); """
qt_lower_bound """ select convert_tz('0000-01-01 00:00:00', '+08:00', '+08:00'); """

// bug fix
sql """ insert into ${tableName} values
Expand Down

0 comments on commit 9287d3a

Please sign in to comment.