You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/07/26 09:49:03 UTC
[doris] branch master updated: [FOLLOW-UP] (datetimev2) complete date function ut and built-in function declaration (#11154)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 823088a9eb [FOLLOW-UP] (datetimev2) complete date function ut and built-in function declaration (#11154)
823088a9eb is described below
commit 823088a9eb72e3f74159698628d0c24cabed1609
Author: Gabriel <ga...@gmail.com>
AuthorDate: Tue Jul 26 17:48:57 2022 +0800
[FOLLOW-UP] (datetimev2) complete date function ut and built-in function declaration (#11154)
---
.../function_date_or_datetime_computation.cpp | 16 +-
.../function_date_or_datetime_computation.h | 4 +
be/src/vec/functions/to_time_function.cpp | 25 +-
be/src/vec/runtime/vdatetime_value.cpp | 170 +++-
be/src/vec/runtime/vdatetime_value.h | 12 +-
be/test/vec/function/function_test_util.cpp | 16 +-
be/test/vec/function/function_test_util.h | 3 +
be/test/vec/function/function_time_test.cpp | 1007 +++++++++++++++++---
gensrc/script/doris_builtins_functions.py | 880 +++++++++++++++++
9 files changed, 1940 insertions(+), 193 deletions(-)
diff --git a/be/src/vec/functions/function_date_or_datetime_computation.cpp b/be/src/vec/functions/function_date_or_datetime_computation.cpp
index 11f16b49dc..a668107690 100644
--- a/be/src/vec/functions/function_date_or_datetime_computation.cpp
+++ b/be/src/vec/functions/function_date_or_datetime_computation.cpp
@@ -23,8 +23,8 @@ namespace doris::vectorized {
using FunctionAddSeconds = FunctionDateOrDateTimeComputation<
AddSecondsImpl<DataTypeDateTime, Int64, DataTypeDateTime>>;
-using FunctionAddSecondsV2 =
- FunctionDateOrDateTimeComputation<AddSecondsImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
+using FunctionAddSecondsV2 = FunctionDateOrDateTimeComputation<
+ AddSecondsImpl<DataTypeDateV2, UInt32, DataTypeDateTimeV2>>;
using FunctionAddMinutes = FunctionDateOrDateTimeComputation<
AddMinutesImpl<DataTypeDateTime, Int64, DataTypeDateTime>>;
using FunctionAddHours =
@@ -35,10 +35,10 @@ using FunctionAddWeeks =
FunctionDateOrDateTimeComputation<AddWeeksImpl<DataTypeDateTime, Int64, DataTypeDateTime>>;
using FunctionAddMonths =
FunctionDateOrDateTimeComputation<AddMonthsImpl<DataTypeDateTime, Int64, DataTypeDateTime>>;
-using FunctionAddMinutesV2 =
- FunctionDateOrDateTimeComputation<AddMinutesImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
+using FunctionAddMinutesV2 = FunctionDateOrDateTimeComputation<
+ AddMinutesImpl<DataTypeDateV2, UInt32, DataTypeDateTimeV2>>;
using FunctionAddHoursV2 =
- FunctionDateOrDateTimeComputation<AddHoursImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
+ FunctionDateOrDateTimeComputation<AddHoursImpl<DataTypeDateV2, UInt32, DataTypeDateTimeV2>>;
using FunctionAddDaysV2 =
FunctionDateOrDateTimeComputation<AddDaysImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
using FunctionAddWeeksV2 =
@@ -71,11 +71,11 @@ using FunctionSubQuarters = FunctionDateOrDateTimeComputation<
using FunctionSubYears = FunctionDateOrDateTimeComputation<
SubtractYearsImpl<DataTypeDateTime, Int64, DataTypeDateTime>>;
using FunctionSubSecondsV2 = FunctionDateOrDateTimeComputation<
- SubtractSecondsImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
+ SubtractSecondsImpl<DataTypeDateV2, UInt32, DataTypeDateTimeV2>>;
using FunctionSubMinutesV2 = FunctionDateOrDateTimeComputation<
- SubtractMinutesImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
+ SubtractMinutesImpl<DataTypeDateV2, UInt32, DataTypeDateTimeV2>>;
using FunctionSubHoursV2 = FunctionDateOrDateTimeComputation<
- SubtractHoursImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
+ SubtractHoursImpl<DataTypeDateV2, UInt32, DataTypeDateTimeV2>>;
using FunctionSubDaysV2 =
FunctionDateOrDateTimeComputation<SubtractDaysImpl<DataTypeDateV2, UInt32, DataTypeDateV2>>;
using FunctionSubWeeksV2 = FunctionDateOrDateTimeComputation<
diff --git a/be/src/vec/functions/function_date_or_datetime_computation.h b/be/src/vec/functions/function_date_or_datetime_computation.h
index ad03133b31..8915a8dfaf 100644
--- a/be/src/vec/functions/function_date_or_datetime_computation.h
+++ b/be/src/vec/functions/function_date_or_datetime_computation.h
@@ -382,6 +382,10 @@ struct DateTimeAddIntervalImpl {
Op::vector_constant(sources->get_data(), col_to->get_data(),
null_map->get_data(),
delta_const_column->get_field().get<Int64>());
+ } else if (delta_const_column->get_field().get_type() == Field::Types::UInt64) {
+ Op::vector_constant(sources->get_data(), col_to->get_data(),
+ null_map->get_data(),
+ delta_const_column->get_field().get<UInt64>());
} else {
Op::vector_constant(sources->get_data(), col_to->get_data(),
null_map->get_data(),
diff --git a/be/src/vec/functions/to_time_function.cpp b/be/src/vec/functions/to_time_function.cpp
index b370dc19a7..480cb0d720 100644
--- a/be/src/vec/functions/to_time_function.cpp
+++ b/be/src/vec/functions/to_time_function.cpp
@@ -81,37 +81,36 @@ using FunctionDateV2 =
using FunctionDateTimeV2Year =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToYearImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToYearImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Quarter =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToQuarterImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToQuarterImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Month =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToMonthImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToMonthImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Day =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToDayImpl<DateV2Value<DateV2ValueType>, UInt32>>;
-using FunctionDateTimeV2Week =
- FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToWeekOneArgImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToDayImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
+using FunctionDateTimeV2Week = FunctionDateOrDateTimeToSomething<
+ DataTypeInt32, ToWeekOneArgImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Hour =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToHourImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToHourImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Minute =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToMinuteImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToMinuteImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Second =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToSecondImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToSecondImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2ToDays =
FunctionDateOrDateTimeToSomething<DataTypeInt32,
- ToDaysImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToDaysImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2ToDate =
FunctionDateOrDateTimeToSomething<DataTypeDateV2,
- ToDateImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ ToDateImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionDateTimeV2Date =
FunctionDateOrDateTimeToSomething<DataTypeDateV2,
- DateImpl<DateV2Value<DateV2ValueType>, UInt32>>;
+ DateImpl<DateV2Value<DateTimeV2ValueType>, UInt64>>;
using FunctionTimeStamp = FunctionDateOrDateTimeToSomething<DataTypeDateTime, TimeStampImpl<Int64>>;
diff --git a/be/src/vec/runtime/vdatetime_value.cpp b/be/src/vec/runtime/vdatetime_value.cpp
index 880ca20449..a48661b6d5 100644
--- a/be/src/vec/runtime/vdatetime_value.cpp
+++ b/be/src/vec/runtime/vdatetime_value.cpp
@@ -1669,6 +1669,9 @@ std::size_t hash_value(VecDateTimeValue const& value) {
template <typename T>
bool DateV2Value<T>::is_invalid(uint32_t year, uint32_t month, uint32_t day, uint8_t hour,
uint8_t minute, uint8_t second, uint32_t microsecond) {
+ if (hour > 24 || minute >= 60 || second >= 60 || microsecond > 999999) {
+ return true;
+ }
if (month == 2 && day == 29 && doris::is_leap(year)) return false;
if (year < MIN_YEAR || year > MAX_YEAR || month == 0 || month > 12 ||
day > s_days_in_month[month] || day == 0) {
@@ -2193,9 +2196,15 @@ bool DateV2Value<T>::from_date_format_str(const char* format, int format_len, co
// 3. if both are true, means all part of date_time be set, no need check_range_and_set_time
bool already_set_date_part = yearday > 0 || (week_num >= 0 && weekday > 0);
if (already_set_date_part && already_set_time_part) return true;
- if (already_set_date_part)
- return check_range_and_set_time(date_v2_value_.year_, date_v2_value_.month_,
- date_v2_value_.day_, hour, minute, second, microsecond);
+ if (already_set_date_part) {
+ if constexpr (is_datetime) {
+ return check_range_and_set_time(date_v2_value_.year_, date_v2_value_.month_,
+ date_v2_value_.day_, hour, minute, second, microsecond);
+ } else {
+ return check_range_and_set_time(date_v2_value_.year_, date_v2_value_.month_,
+ date_v2_value_.day_, 0, 0, 0, 0);
+ }
+ }
if (already_set_time_part) {
if constexpr (is_datetime) {
return check_range_and_set_time(year, month, day, date_v2_value_.hour_,
@@ -2205,7 +2214,11 @@ bool DateV2Value<T>::from_date_format_str(const char* format, int format_len, co
return check_range_and_set_time(year, month, day, 0, 0, 0, 0);
}
}
- return check_range_and_set_time(year, month, day, hour, minute, second, microsecond);
+ if constexpr (is_datetime) {
+ return check_range_and_set_time(year, month, day, hour, minute, second, microsecond);
+ } else {
+ return check_range_and_set_time(year, month, day, 0, 0, 0, 0);
+ }
}
template <typename T>
@@ -2360,10 +2373,11 @@ bool DateV2Value<T>::get_date_from_daynr(uint64_t daynr) {
}
day = days_of_year + leap_day;
- if (is_invalid(year, month, day, 0, 0, 0, 0)) {
+ if (is_invalid(year, month, day, this->hour(), this->minute(), this->second(),
+ this->microsecond())) {
return false;
}
- set_time(year, month, day, 0, 0, 0, 0);
+ set_time(year, month, day, this->hour(), this->minute(), this->second(), this->microsecond());
return true;
}
@@ -2372,15 +2386,30 @@ template <TimeUnit unit, typename TO>
bool DateV2Value<T>::date_add_interval(const TimeInterval& interval, DateV2Value<TO>& to_value) {
if (!is_valid_date()) return false;
+ int sign = interval.is_neg ? -1 : 1;
+
if constexpr ((unit == SECOND) || (unit == MINUTE) || (unit == HOUR) ||
(unit == SECOND_MICROSECOND) || (unit == MINUTE_MICROSECOND) ||
(unit == MINUTE_SECOND) || (unit == HOUR_MICROSECOND) || (unit == HOUR_SECOND) ||
(unit == HOUR_MINUTE) || (unit == DAY_MICROSECOND) || (unit == DAY_SECOND) ||
(unit == DAY_MINUTE) || (unit == DAY_HOUR) || (unit == DAY) || (unit == WEEK)) {
- uint32_t day_nr = daynr() + interval.day;
+ // This may change the day information
+
+ int64_t seconds = (this->day() - 1) * 86400L + this->hour() * 3600L + this->minute() * 60 +
+ this->second() +
+ sign * (interval.day * 86400 + interval.hour * 3600 +
+ interval.minute * 60 + interval.second);
+ int64_t days = seconds / 86400;
+ seconds %= 86400L;
+ if (seconds < 0) {
+ seconds += 86400L;
+ days--;
+ }
+ int64_t day_nr = doris::calc_daynr(this->year(), this->month(), 1) + days;
if (!to_value.get_date_from_daynr(day_nr)) {
return false;
}
+ to_value.set_time(seconds / 3600, (seconds / 60) % 60, seconds % 60, 0);
} else if constexpr (unit == YEAR) {
// This only change year information
to_value.template set_time_unit<TimeUnit::YEAR>(date_v2_value_.year_ + interval.year);
@@ -2410,6 +2439,66 @@ bool DateV2Value<T>::date_add_interval(const TimeInterval& interval, DateV2Value
return true;
}
+template <typename T>
+template <TimeUnit unit>
+bool DateV2Value<T>::date_add_interval(const TimeInterval& interval) {
+ if (!is_valid_date()) return false;
+
+ int sign = interval.is_neg ? -1 : 1;
+
+ if constexpr ((unit == SECOND) || (unit == MINUTE) || (unit == HOUR) ||
+ (unit == SECOND_MICROSECOND) || (unit == MINUTE_MICROSECOND) ||
+ (unit == MINUTE_SECOND) || (unit == HOUR_MICROSECOND) || (unit == HOUR_SECOND) ||
+ (unit == HOUR_MINUTE) || (unit == DAY_MICROSECOND) || (unit == DAY_SECOND) ||
+ (unit == DAY_MINUTE) || (unit == DAY_HOUR) || (unit == DAY) || (unit == WEEK)) {
+ // This may change the day information
+
+ int64_t seconds = (this->day() - 1) * 86400L + this->hour() * 3600L + this->minute() * 60 +
+ this->second() +
+ sign * (interval.day * 86400 + interval.hour * 3600 +
+ interval.minute * 60 + interval.second);
+ int64_t days = seconds / 86400;
+ seconds %= 86400L;
+ if (seconds < 0) {
+ seconds += 86400L;
+ days--;
+ }
+ int64_t day_nr = doris::calc_daynr(this->year(), this->month(), 1) + days;
+ if (!this->get_date_from_daynr(day_nr)) {
+ return false;
+ }
+ if constexpr (is_datetime) {
+ this->set_time(seconds / 3600, (seconds / 60) % 60, seconds % 60, this->microsecond());
+ }
+ } else if constexpr (unit == YEAR) {
+ // This only change year information
+ this->template set_time_unit<TimeUnit::YEAR>(date_v2_value_.year_ + interval.year);
+ if (this->year() > 9999) {
+ return false;
+ }
+ if (date_v2_value_.month_ == 2 && date_v2_value_.day_ == 29 &&
+ !doris::is_leap(this->year())) {
+ this->template set_time_unit<TimeUnit::DAY>(28);
+ }
+ } else if constexpr (unit == QUARTER || unit == MONTH || unit == YEAR_MONTH) {
+ // This will change month and year information, maybe date.
+ int64_t months = date_v2_value_.year_ * 12 + date_v2_value_.month_ - 1 +
+ 12 * interval.year + interval.month;
+ this->template set_time_unit<TimeUnit::YEAR>(months / 12);
+ if (this->year() > 9999) {
+ return false;
+ }
+ this->template set_time_unit<TimeUnit::MONTH>((months % 12) + 1);
+ if (date_v2_value_.day_ > s_days_in_month[this->month()]) {
+ date_v2_value_.day_ = s_days_in_month[this->month()];
+ if (this->month() == 2 && doris::is_leap(this->year())) {
+ this->template set_time_unit<TimeUnit::DAY>(date_v2_value_.day_ + 1);
+ }
+ }
+ }
+ return true;
+}
+
template <typename T>
bool DateV2Value<T>::unix_timestamp(int64_t* timestamp, const std::string& timezone) const {
cctz::time_zone ctz;
@@ -2581,7 +2670,7 @@ bool DateV2Value<T>::to_format_string(const char* format, int len, char* to) con
case 'h':
case 'I':
// Hour (01..12)
- pos = int_to_str(12, buf);
+ int_to_str((this->hour() % 24 + 11) % 12 + 1, buf);
to = append_with_prefix(buf, pos - buf, '0', 2, to);
break;
case 'H':
@@ -2627,9 +2716,21 @@ bool DateV2Value<T>::to_format_string(const char* format, int len, char* to) con
break;
case 'r': {
// Time, 12-hour (hh:mm:ss followed by AM or PM)
- std::string time12_str("12:00:00 AM");
- memcpy(to, time12_str.data(), time12_str.size());
- to += time12_str.size();
+ *to++ = (char)('0' + (((this->hour() + 11) % 12 + 1) / 10));
+ *to++ = (char)('0' + (((this->hour() + 11) % 12 + 1) % 10));
+ *to++ = ':';
+ // Minute
+ *to++ = (char)('0' + (this->minute() / 10));
+ *to++ = (char)('0' + (this->minute() % 10));
+ *to++ = ':';
+ /* Second */
+ *to++ = (char)('0' + (this->second() / 10));
+ *to++ = (char)('0' + (this->second() % 10));
+ if ((this->hour() % 24) >= 12) {
+ to = append_string(" PM", to);
+ } else {
+ to = append_string(" AM", to);
+ }
break;
}
case 's':
@@ -2640,9 +2741,16 @@ bool DateV2Value<T>::to_format_string(const char* format, int len, char* to) con
break;
case 'T': {
// Time, 24-hour (hh:mm:ss)
- std::string time24_str("00:00:00");
- memcpy(to, time24_str.data(), time24_str.size());
- to += time24_str.size();
+ *to++ = (char)('0' + ((this->hour() % 24) / 10));
+ *to++ = (char)('0' + ((this->hour() % 24) % 10));
+ *to++ = ':';
+ // Minute
+ *to++ = (char)('0' + (this->minute() / 10));
+ *to++ = (char)('0' + (this->minute() % 10));
+ *to++ = ':';
+ /* Second */
+ *to++ = (char)('0' + (this->second() / 10));
+ *to++ = (char)('0' + (this->second() % 10));
break;
}
case 'u':
@@ -2966,4 +3074,38 @@ template bool VecDateTimeValue::date_add_interval<TimeUnit::YEAR>(const TimeInte
template bool VecDateTimeValue::date_add_interval<TimeUnit::QUARTER>(const TimeInterval& interval);
template bool VecDateTimeValue::date_add_interval<TimeUnit::WEEK>(const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::SECOND>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::MINUTE>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::HOUR>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::DAY>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::MONTH>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::YEAR>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::QUARTER>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateV2ValueType>::date_add_interval<TimeUnit::WEEK>(
+ const TimeInterval& interval);
+
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::SECOND>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::MINUTE>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::HOUR>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::DAY>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::MONTH>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::YEAR>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::QUARTER>(
+ const TimeInterval& interval);
+template bool DateV2Value<DateTimeV2ValueType>::date_add_interval<TimeUnit::WEEK>(
+ const TimeInterval& interval);
+
} // namespace doris::vectorized
diff --git a/be/src/vec/runtime/vdatetime_value.h b/be/src/vec/runtime/vdatetime_value.h
index 350b8b7373..7cf696b8c7 100644
--- a/be/src/vec/runtime/vdatetime_value.h
+++ b/be/src/vec/runtime/vdatetime_value.h
@@ -829,7 +829,7 @@ public:
return calc_daynr(date_v2_value_.year_, date_v2_value_.month_, date_v2_value_.day_);
}
- int hour() const {
+ uint8_t hour() const {
if constexpr (is_datetime) {
return date_v2_value_.hour_;
} else {
@@ -837,7 +837,7 @@ public:
}
}
- int minute() const {
+ uint8_t minute() const {
if constexpr (is_datetime) {
return date_v2_value_.minute_;
} else {
@@ -845,7 +845,7 @@ public:
}
}
- int second() const {
+ uint8_t second() const {
if constexpr (is_datetime) {
return date_v2_value_.second_;
} else {
@@ -853,7 +853,7 @@ public:
}
}
- int microsecond() const {
+ uint32_t microsecond() const {
if constexpr (is_datetime) {
return date_v2_value_.microsecond_;
} else {
@@ -912,9 +912,7 @@ public:
bool date_add_interval(const TimeInterval& interval, DateV2Value<TO>& to_value);
template <TimeUnit unit>
- bool date_add_interval(const TimeInterval& interval) {
- return this->date_add_interval<unit>(interval, *this);
- }
+ bool date_add_interval(const TimeInterval& interval);
//unix_timestamp is called with a timezone argument,
//it returns seconds of the value of date literal since '1970-01-01 00:00:00' UTC
diff --git a/be/test/vec/function/function_test_util.cpp b/be/test/vec/function/function_test_util.cpp
index 956a76e4ff..3cc25ccd95 100644
--- a/be/test/vec/function/function_test_util.cpp
+++ b/be/test/vec/function/function_test_util.cpp
@@ -40,6 +40,13 @@ uint32_t str_to_date_v2(std::string datetime_str, std::string datetime_format) {
return binary_cast<DateV2Value<DateV2ValueType>, UInt32>(v);
}
+uint64_t str_to_datetime_v2(std::string datetime_str, std::string datetime_format) {
+ DateV2Value<DateTimeV2ValueType> v;
+ v.from_date_format_str(datetime_format.c_str(), datetime_format.size(), datetime_str.c_str(),
+ datetime_str.size());
+ return binary_cast<DateV2Value<DateTimeV2ValueType>, UInt64>(v);
+}
+
size_t type_index_to_data_type(const std::vector<std::any>& input_types, size_t index,
ut_type::UTDataTypeDesc& ut_desc, DataTypePtr& type) {
doris_udf::FunctionContext::TypeDesc& desc = ut_desc.type_desc;
@@ -109,7 +116,7 @@ size_t type_index_to_data_type(const std::vector<std::any>& input_types, size_t
return 1;
case TypeIndex::DateTimeV2:
desc.type = doris_udf::FunctionContext::TYPE_DATETIMEV2;
- type = std::make_shared<DataTypeDateV2>();
+ type = std::make_shared<DataTypeDateTimeV2>();
return 1;
case TypeIndex::Array: {
desc.type = doris_udf::FunctionContext::TYPE_ARRAY;
@@ -220,6 +227,13 @@ bool insert_cell(MutableColumnPtr& column, DataTypePtr type_ptr, const std::any&
v.from_date_format_str(date_time_format.c_str(), date_time_format.size(),
datetime_str.c_str(), datetime_str.size());
column->insert_data(reinterpret_cast<char*>(&v), 0);
+ } else if (type.is_date_time_v2()) {
+ static std::string date_time_format("%Y-%m-%d %H:%i:%s.%f");
+ auto datetime_str = std::any_cast<std::string>(cell);
+ DateV2Value<DateTimeV2ValueType> v;
+ v.from_date_format_str(date_time_format.c_str(), date_time_format.size(),
+ datetime_str.c_str(), datetime_str.size());
+ column->insert_data(reinterpret_cast<char*>(&v), 0);
} else if (type.is_array()) {
auto v = std::any_cast<Array>(cell);
column->insert(v);
diff --git a/be/test/vec/function/function_test_util.h b/be/test/vec/function/function_test_util.h
index f29ab896c3..4e0685ec91 100644
--- a/be/test/vec/function/function_test_util.h
+++ b/be/test/vec/function/function_test_util.h
@@ -46,6 +46,7 @@ using InputTypeSet = std::vector<std::any>;
int64_t str_to_date_time(std::string datetime_str, bool data_time = true);
uint32_t str_to_date_v2(std::string datetime_str, std::string datetime_format);
+uint64_t str_to_datetime_v2(std::string datetime_str, std::string datetime_format);
namespace ut_type {
using TINYINT = int8_t;
@@ -223,6 +224,8 @@ void check_function(const std::string& func_name, const InputTypeSet& input_type
fn_ctx_return.type = doris_udf::FunctionContext::TYPE_DATETIME;
} else if (std::is_same_v<ReturnType, DateV2>) {
fn_ctx_return.type = doris_udf::FunctionContext::TYPE_DATEV2;
+ } else if (std::is_same_v<ReturnType, DateTimeV2>) {
+ fn_ctx_return.type = doris_udf::FunctionContext::TYPE_DATETIMEV2;
} else {
fn_ctx_return.type = doris_udf::FunctionContext::INVALID_TYPE;
}
diff --git a/be/test/vec/function/function_time_test.cpp b/be/test/vec/function/function_time_test.cpp
index c03a572435..40bcd4fb5f 100644
--- a/be/test/vec/function/function_time_test.cpp
+++ b/be/test/vec/function/function_time_test.cpp
@@ -568,139 +568,274 @@ TEST(VTimestampFunctionsTest, weekday_test) {
TEST(VTimestampFunctionsTest, day_of_week_v2_test) {
std::string func_name = "dayofweek";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2001-02-03")}, 7},
- {{std::string("2020-00-01")}, Null()},
- {{std::string("2020-01-00")}, Null()}};
+ DataSet data_set = {{{std::string("2001-02-03")}, 7},
+ {{std::string("2020-00-01")}, Null()},
+ {{std::string("2020-01-00")}, Null()}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2001-02-03 01:00:00")}, 7},
+ {{std::string("2001-02-03 01:00:00.213")}, 7},
+ {{std::string("2001-02-03 01:00:00.123213")}, 7},
+ {{std::string("2001-02-03 01:00:00.123123213")}, 7},
+ {{std::string("2001-02-03 25:00:00.123123213")}, Null()},
+ {{std::string("2001-02-03 01:61:00.123123213")}, Null()},
+ {{std::string("2001-02-03 01:00:61.123123213")}, Null()},
+ {{std::string("2020-00-01 01:00:00")}, Null()},
+ {{std::string("2020-01-00 01:00:00")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, day_of_month_v2_test) {
std::string func_name = "dayofmonth";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2020-00-01")}, Null()},
- {{std::string("2020-01-01")}, 1},
- {{std::string("2020-02-29")}, 29}};
+ DataSet data_set = {{{std::string("2020-00-01")}, Null()},
+ {{std::string("2020-01-01")}, 1},
+ {{std::string("2020-02-29")}, 29}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2020-00-01 01:00:00")}, Null()},
+ {{std::string("2020-01-01 01:00:00")}, 1},
+ {{std::string("2020-02-29 01:00:00.123123")}, 29}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, day_of_year_v2_test) {
std::string func_name = "dayofyear";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2020-00-01")}, Null()},
- {{std::string("2020-01-00")}, Null()},
- {{std::string("2020-02-29")}, 60}};
+ DataSet data_set = {{{std::string("2020-00-01")}, Null()},
+ {{std::string("2020-01-00")}, Null()},
+ {{std::string("2020-02-29")}, 60}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2020-00-01 01:00:00")}, Null()},
+ {{std::string("2020-01-00 01:00:00")}, Null()},
+ {{std::string("2020-02-29 01:00:00.1232")}, 60}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, week_of_year_v2_test) {
std::string func_name = "weekofyear";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2020-00-01")}, Null()},
- {{std::string("2020-01-00")}, Null()},
- {{std::string("2020-02-29")}, 9}};
+ DataSet data_set = {{{std::string("2020-00-01")}, Null()},
+ {{std::string("2020-01-00")}, Null()},
+ {{std::string("2020-02-29")}, 9}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2020-00-01 01:00:00")}, Null()},
+ {{std::string("2020-01-00 01:00:00")}, Null()},
+ {{std::string("2020-02-29 01:00:00")}, 9},
+ {{std::string("2020-02-29 01:00:00.12312")}, 9}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, year_v2_test) {
std::string func_name = "year";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
+
+ DataSet data_set = {{{std::string("2021-01-01")}, 2021},
+ {{std::string("2021-01-00")}, Null()},
+ {{std::string("2025-05-01")}, 2025}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 2021},
- {{std::string("2021-01-00")}, Null()},
- {{std::string("2025-05-01")}, 2025}};
+ DataSet data_set = {{{std::string("2021-01-01 01:00:00")}, 2021},
+ {{std::string("2021-01-00 01:00:00")}, Null()},
+ {{std::string("2025-05-01 01:00:00.123")}, 2025}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, quarter_v2_test) {
std::string func_name = "quarter";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 1},
- {{std::string("")}, Null()},
- {{std::string("2021-01-32")}, Null()},
- {{std::string("2025-10-23")}, 4}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32")}, Null()},
+ {{std::string("2025-10-23")}, 4}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:00")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32 00:00:00")}, Null()},
+ {{std::string("2025-10-23 00:00:00")}, 4}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, month_v2_test) {
std::string func_name = "month";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 1},
- {{std::string("")}, Null()},
- {{std::string("2021-01-32")}, Null()},
- {{std::string("2025-05-23")}, 5}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32")}, Null()},
+ {{std::string("2025-05-23")}, 5}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:00")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32 00:00:00")}, Null()},
+ {{std::string("2025-05-23 00:00:00")}, 5}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, day_v2_test) {
std::string func_name = "day";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 1},
- {{std::string("")}, Null()},
- {{std::string("2021-01-32")}, Null()},
- {{std::string("2025-05-23")}, 23}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32")}, Null()},
+ {{std::string("2025-05-23")}, 23}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:00")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32 00:00:00")}, Null()},
+ {{std::string("2025-05-23 00:00:00")}, 23}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, hour_v2_test) {
std::string func_name = "hour";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 0},
- {{std::string("2021-01-13")}, 0},
- {{std::string("")}, Null()},
- {{std::string("2025-05-23")}, 0}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 0},
+ {{std::string("2021-01-13")}, 0},
+ {{std::string("")}, Null()},
+ {{std::string("2025-05-23")}, 0}};
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ DataSet data_set = {{{std::string("2021-01-01 00:00:00.123")}, 0},
+ {{std::string("2021-01-13 01:00:00.123")}, 1},
+ {{std::string("")}, Null()},
+ {{std::string("2025-05-23 23:00:00.123")}, 23},
+ {{std::string("2025-05-23 25:00:00.123")}, Null()}};
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, minute_v2_test) {
std::string func_name = "minute";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 0},
- {{std::string("2021-01-13")}, 0},
- {{std::string("")}, Null()},
- {{std::string("2025-05-23")}, 0}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 0},
+ {{std::string("2021-01-13")}, 0},
+ {{std::string("")}, Null()},
+ {{std::string("2025-05-23")}, 0}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:00.123")}, 0},
+ {{std::string("2021-01-13 00:11:00.123")}, 11},
+ {{std::string("")}, Null()},
+ {{std::string("2025-05-23 00:22:22.123")}, 22},
+ {{std::string("2025-05-23 00:60:22.123")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, second_v2_test) {
std::string func_name = "second";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 0},
- {{std::string("2021-01-13")}, 0},
- {{std::string("")}, Null()},
- {{std::string("2025-05-23")}, 0}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 0},
+ {{std::string("2021-01-13")}, 0},
+ {{std::string("")}, Null()},
+ {{std::string("2025-05-23")}, 0}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:01.123")}, 1},
+ {{std::string("2021-01-13 00:00:02.123")}, 2},
+ {{std::string("")}, Null()},
+ {{std::string("2025-05-23 00:00:63.123")}, Null()},
+ {{std::string("2025-05-23 00:00:00.123")}, 0}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, timediff_v2_test) {
@@ -762,6 +897,68 @@ TEST(VTimestampFunctionsTest, timediff_v2_test) {
check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
}
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::DateTimeV2};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-18 00:00:00")}, 0.0},
+ {{std::string("2019-07-18 00:00:10"), std::string("2019-07-18 00:00:00")}, 10.0},
+ {{std::string("2019-00-18 00:00:00"), std::string("2019-07-18 00:00:00")}, Null()},
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-00 00:00:00")}, Null()}};
+
+ check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Date};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-18")}, 0.0},
+ {{std::string("2019-07-18 00:00:10"), std::string("2019-07-18")}, 10.0},
+ {{std::string("2019-00-18 00:00:00"), std::string("2019-07-18")}, Null()},
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-00")}, Null()}};
+
+ check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::Date, TypeIndex::DateTimeV2};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18"), std::string("2019-07-18 00:00:00")}, 0.0},
+ {{std::string("2019-07-18"), std::string("2019-07-18 00:00:10")}, -10.0},
+ {{std::string("2019-00-18"), std::string("2019-07-18 00:00:00")}, Null()},
+ {{std::string("2019-07-18"), std::string("2019-07-00 00:00:00")}, Null()}};
+
+ check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTime, TypeIndex::DateTimeV2};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-18 00:00:00")}, 0.0},
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-18 00:00:10")}, -10.0},
+ {{std::string("2019-00-18 00:00:00"), std::string("2019-07-18 00:00:00")}, Null()},
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-00 00:00:00")}, Null()}};
+
+ check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::DateTime};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-18 00:00:00")}, 0.0},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-18 00:00:00")},
+ -0.0},
+ {{std::string("2019-00-18 00:00:00.123"), std::string("2019-07-18 00:00:00")},
+ Null()},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-00 00:00:00")},
+ Null()}};
+
+ check_function<DataTypeFloat64, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, datediff_v2_test) {
@@ -823,25 +1020,133 @@ TEST(VTimestampFunctionsTest, datediff_v2_test) {
check_function<DataTypeInt32, true>(func_name, input_types, data_set);
}
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::DateV2};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-19")}, -1},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-17")}, 1},
+ {{std::string("2019-00-18 00:00:00.123"), std::string("2019-07-18")}, Null()},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-00")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Date};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-19")}, -1},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-17")}, 1},
+ {{std::string("2019-00-18 00:00:00.123"), std::string("2019-07-18")}, Null()},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-00")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::Date, TypeIndex::DateTimeV2};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18"), std::string("2019-07-19 00:00:00.123")}, -1},
+ {{std::string("2019-07-18"), std::string("2019-07-17 00:00:00.123")}, 1},
+ {{std::string("2019-00-18"), std::string("2019-07-18 00:00:00.123")}, Null()},
+ {{std::string("2019-07-18"), std::string("2019-07-00 00:00:00.123")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTime, TypeIndex::DateTimeV2};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-19 00:00:00.123")}, -1},
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-17 00:00:00.123")}, 1},
+ {{std::string("2019-00-18 00:00:00"), std::string("2019-07-18 00:00:00.123")},
+ Null()},
+ {{std::string("2019-07-18 00:00:00"), std::string("2019-07-00 00:00:00.123")},
+ Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::DateTime};
+
+ DataSet data_set = {
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-19 00:00:00")}, -1},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-17 00:00:00")}, 1},
+ {{std::string("2019-00-18 00:00:00.123"), std::string("2019-07-18 00:00:00")},
+ Null()},
+ {{std::string("2019-07-18 00:00:00.123"), std::string("2019-07-00 00:00:00")},
+ Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, date_format_v2_test) {
std::string func_name = "date_format";
- InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
{
+ InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
+ DataSet data_set = {{{std::string("2009-10-04"), std::string("%W %M %Y")},
+ std::string("Sunday October 2009")}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
+ DataSet data_set = {
+ {{std::string("2007-10-04"), std::string("%H:%i:%s")}, std::string("00:00:00")}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
+ DataSet data_set = {{{std::string("1900-10-04"), std::string("%D %y %a %d %m %b %j")},
+ std::string("4th 00 Thu 04 10 Oct 277")}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
+ DataSet data_set = {{{std::string("1999-01-01 00:00:00"), std::string("%X %V")},
+ std::string("1998 52")}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
+ DataSet data_set = {
+ {{std::string("2006-06-01 00:00:00"), std::string("%d")}, std::string("01")}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, Consted {TypeIndex::String}};
+ DataSet data_set = {
+ {{std::string("2006-06-01 00:00:00"), std::string("%%%d")}, std::string("%01")}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {{{std::string("2009-10-04 22:23:00"), std::string("%W %M %Y")},
std::string("Sunday October 2009")}};
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
{
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {{{std::string("2007-10-04 22:23:00"), std::string("%H:%i:%s")},
- std::string("00:00:00")}};
+ std::string("22:23:00")}};
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
{
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {
{{std::string("1900-10-04 22:23:00"), std::string("%D %y %a %d %m %b %j")},
std::string("4th 00 Thu 04 10 Oct 277")}};
@@ -849,25 +1154,29 @@ TEST(VTimestampFunctionsTest, date_format_v2_test) {
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
{
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {
{{std::string("1997-10-04 22:23:00"), std::string("%H %k %I %r %T %S %w")},
- std::string("00 0 12 12:00:00 AM 00:00:00 00 6")}};
+ std::string("22 22 10 10:23:00 PM 22:23:00 00 6")}};
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
{
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {{{std::string("1999-01-01 00:00:00"), std::string("%X %V")},
std::string("1998 52")}};
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
{
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {
{{std::string("2006-06-01 00:00:00"), std::string("%d")}, std::string("01")}};
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
{
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, Consted {TypeIndex::String}};
DataSet data_set = {
{{std::string("2006-06-01 00:00:00"), std::string("%%%d")}, std::string("%01")}};
@@ -878,163 +1187,341 @@ TEST(VTimestampFunctionsTest, date_format_v2_test) {
TEST(VTimestampFunctionsTest, years_add_v2_test) {
std::string func_name = "years_add";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {{{std::string("2020-05-23"), 5}, str_to_date_v2("2025-05-23", "%Y-%m-%d")},
- {{std::string("2020-05-23"), -5}, str_to_date_v2("2015-05-23", "%Y-%m-%d")},
- {{std::string(""), 5}, Null()},
- {{std::string("2020-05-23"), 8000}, Null()},
- {{Null(), 5}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-05-23"), 5}, str_to_date_v2("2025-05-23", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), -5}, str_to_date_v2("2015-05-23", "%Y-%m-%d")},
+ {{std::string(""), 5}, Null()},
+ {{std::string("2020-05-23"), 8000}, Null()},
+ {{Null(), 5}, Null()}};
+
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 00:00:11.123"), 5},
+ str_to_datetime_v2("2025-05-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), -5},
+ str_to_datetime_v2("2015-05-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 5}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 8000}, Null()},
+ {{Null(), 5}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, years_sub_v2_test) {
std::string func_name = "years_sub";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {
+ {{std::string("2020-05-23"), 5}, str_to_date_v2("2015-05-23", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), -5}, str_to_date_v2("2025-05-23", "%Y-%m-%d")},
+ {{std::string(""), 5}, Null()},
+ {{std::string("2020-05-23"), 3000}, Null()},
+ {{Null(), 5}, Null()}};
+
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
- DataSet data_set = {{{std::string("2020-05-23"), 5}, str_to_date_v2("2015-05-23", "%Y-%m-%d")},
- {{std::string("2020-05-23"), -5}, str_to_date_v2("2025-05-23", "%Y-%m-%d")},
- {{std::string(""), 5}, Null()},
- {{std::string("2020-05-23"), 3000}, Null()},
- {{Null(), 5}, Null()}};
+ DataSet data_set = {{{std::string("2020-05-23 00:00:11.123"), 5},
+ str_to_datetime_v2("2015-05-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), -5},
+ str_to_datetime_v2("2025-05-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 5}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 3000}, Null()},
+ {{Null(), 5}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, months_add_v2_test) {
std::string func_name = "months_add";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {{{std::string("2020-10-23"), -4}, str_to_date_v2("2020-06-23", "%Y-%m-%d")},
- {{std::string("2020-05-23"), 4}, str_to_date_v2("2020-09-23", "%Y-%m-%d")},
- {{std::string(""), 4}, Null()},
- {{std::string("2020-05-23"), 10}, str_to_date_v2("2021-03-23", "%Y-%m-%d")},
- {{Null(), 4}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-10-23"), -4}, str_to_date_v2("2020-06-23", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), 4}, str_to_date_v2("2020-09-23", "%Y-%m-%d")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 10}, str_to_date_v2("2021-03-23", "%Y-%m-%d")},
+ {{Null(), 4}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23 00:00:11.123"), -4},
+ str_to_datetime_v2("2020-06-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), 4},
+ str_to_datetime_v2("2020-09-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 10},
+ str_to_datetime_v2("2021-03-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, months_sub_v2_test) {
std::string func_name = "months_sub";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {{{std::string("2020-05-23"), 4}, str_to_date_v2("2020-01-23", "%Y-%m-%d")},
- {{std::string("2020-05-23"), -4}, str_to_date_v2("2020-09-23", "%Y-%m-%d")},
- {{std::string(""), 4}, Null()},
- {{std::string("2020-05-23"), 10}, str_to_date_v2("2019-07-23", "%Y-%m-%d")},
- {{Null(), 4}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-05-23"), 4}, str_to_date_v2("2020-01-23", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), -4}, str_to_date_v2("2020-09-23", "%Y-%m-%d")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 10}, str_to_date_v2("2019-07-23", "%Y-%m-%d")},
+ {{Null(), 4}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 00:00:11.123"), 4},
+ str_to_datetime_v2("2020-01-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), -4},
+ str_to_datetime_v2("2020-09-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 10},
+ str_to_datetime_v2("2019-07-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, days_add_v2_test) {
std::string func_name = "days_add";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {{{std::string("2020-10-23"), -4}, str_to_date_v2("2020-10-19", "%Y-%m-%d")},
- {{std::string("2020-05-23"), 4}, str_to_date_v2("2020-05-27", "%Y-%m-%d")},
- {{std::string(""), 4}, Null()},
- {{std::string("2020-05-23"), 10}, str_to_date_v2("2020-06-02", "%Y-%m-%d")},
- {{Null(), 4}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-10-23"), -4}, str_to_date_v2("2020-10-19", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), 4}, str_to_date_v2("2020-05-27", "%Y-%m-%d")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 10}, str_to_date_v2("2020-06-02", "%Y-%m-%d")},
+ {{Null(), 4}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23 00:00:11.123"), -4},
+ str_to_datetime_v2("2020-10-19 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), 4},
+ str_to_datetime_v2("2020-05-27 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 10},
+ str_to_datetime_v2("2020-06-02 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, days_sub_v2_test) {
std::string func_name = "days_sub";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {{{std::string("2020-05-23"), 4}, str_to_date_v2("2020-05-19", "%Y-%m-%d")},
- {{std::string("2020-05-23"), -4}, str_to_date_v2("2020-05-27", "%Y-%m-%d")},
- {{std::string(""), 4}, Null()},
- {{std::string("2020-05-23"), 31}, str_to_date_v2("2020-04-22", "%Y-%m-%d")},
- {{Null(), 4}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-05-23"), 4}, str_to_date_v2("2020-05-19", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), -4}, str_to_date_v2("2020-05-27", "%Y-%m-%d")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 31}, str_to_date_v2("2020-04-22", "%Y-%m-%d")},
+ {{Null(), 4}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 00:00:11.123"), 4},
+ str_to_datetime_v2("2020-05-19 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), -4},
+ str_to_datetime_v2("2020-05-27 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 31},
+ str_to_datetime_v2("2020-04-22 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, weeks_add_v2_test) {
std::string func_name = "weeks_add";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {
- {{std::string("2020-10-23"), 5}, str_to_date_v2("2020-11-27", "%Y-%m-%d")},
- {{std::string("2020-05-23"), -5}, str_to_date_v2("2020-04-18", "%Y-%m-%d")},
- {{std::string(""), 4}, Null()},
- {{std::string("2020-05-23"), 100}, str_to_date_v2("2022-04-23", "%Y-%m-%d")},
- {{Null(), 4}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-10-23"), 5}, str_to_date_v2("2020-11-27", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), -5}, str_to_date_v2("2020-04-18", "%Y-%m-%d")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100}, str_to_date_v2("2022-04-23", "%Y-%m-%d")},
+ {{Null(), 4}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23 00:00:11.123"), 5},
+ str_to_datetime_v2("2020-11-27 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), -5},
+ str_to_datetime_v2("2020-04-18 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 100},
+ str_to_datetime_v2("2022-04-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, weeks_sub_v2_test) {
std::string func_name = "weeks_sub";
- InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
- DataSet data_set = {
- {{std::string("2020-05-23"), 5}, str_to_date_v2("2020-04-18", "%Y-%m-%d")},
- {{std::string("2020-05-23"), -5}, str_to_date_v2("2020-06-27", "%Y-%m-%d")},
- {{std::string(""), 4}, Null()},
- {{std::string("2020-05-23"), 100}, str_to_date_v2("2018-06-23", "%Y-%m-%d")},
- {{Null(), 4}, Null()}};
+ DataSet data_set = {
+ {{std::string("2020-05-23"), 5}, str_to_date_v2("2020-04-18", "%Y-%m-%d")},
+ {{std::string("2020-05-23"), -5}, str_to_date_v2("2020-06-27", "%Y-%m-%d")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100}, str_to_date_v2("2018-06-23", "%Y-%m-%d")},
+ {{Null(), 4}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 00:00:11.123"), 5},
+ str_to_datetime_v2("2020-04-18 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 00:00:11.123"), -5},
+ str_to_datetime_v2("2020-06-27 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 00:00:11.123"), 100},
+ str_to_datetime_v2("2018-06-23 00:00:11.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, to_days_v2_test) {
std::string func_name = "to_days";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, 738156},
- {{std::string("")}, Null()},
- {{std::string("2021-01-32")}, Null()},
- {{std::string("0000-01-01")}, Null()}};
+ DataSet data_set = {{{std::string("2021-01-01")}, 738156},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32")}, Null()},
+ {{std::string("0000-01-01")}, Null()}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:11.123")}, 738156},
+ {{std::string("")}, Null()},
+ {{std::string("2021-01-32 00:00:11.123")}, Null()},
+ {{std::string("0000-01-01 00:00:11.123")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, date_v2_test) {
std::string func_name = "date";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2021-01-01")}, str_to_date_v2("2021-01-01", "%Y-%m-%d")},
- {{std::string("")}, Null()},
- {{Null()}, Null()},
- {{std::string("0000-01-01")}, Null()}};
+ DataSet data_set = {{{std::string("2021-01-01")}, str_to_date_v2("2021-01-01", "%Y-%m-%d")},
+ {{std::string("")}, Null()},
+ {{Null()}, Null()},
+ {{std::string("0000-01-01")}, Null()}};
- check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2021-01-01 00:00:11.123")},
+ str_to_date_v2("2021-01-01", "%Y-%m-%d")},
+ {{std::string("")}, Null()},
+ {{Null()}, Null()},
+ {{std::string("0000-01-01 00:00:11.123")}, Null()}};
+
+ check_function<DataTypeDateV2, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, week_v2_test) {
std::string func_name = "week";
- InputTypeSet new_input_types = {TypeIndex::DateV2};
- DataSet new_data_set = {{{std::string("1989-03-21")}, 12},
- {{std::string("")}, Null()},
- {{std::string("9999-12-12")}, 50}};
+ {
+ InputTypeSet new_input_types = {TypeIndex::DateV2};
+ DataSet new_data_set = {{{std::string("1989-03-21")}, 12},
+ {{std::string("")}, Null()},
+ {{std::string("9999-12-12")}, 50}};
- check_function<DataTypeInt32, true>(func_name, new_input_types, new_data_set);
+ check_function<DataTypeInt32, true>(func_name, new_input_types, new_data_set);
+ }
+ {
+ InputTypeSet new_input_types = {TypeIndex::DateTimeV2};
+ DataSet new_data_set = {{{std::string("1989-03-21 00:00:11.123")}, 12},
+ {{std::string("")}, Null()},
+ {{std::string("9999-12-12 00:00:11.123")}, 50}};
+
+ check_function<DataTypeInt32, true>(func_name, new_input_types, new_data_set);
+ }
}
TEST(VTimestampFunctionsTest, yearweek_v2_test) {
std::string func_name = "yearweek";
- InputTypeSet new_input_types = {TypeIndex::DateV2};
- DataSet new_data_set = {{{std::string("1989-03-21")}, 198912},
- {{std::string("")}, Null()},
- {{std::string("9999-12-12")}, 999950}};
+ {
+ InputTypeSet new_input_types = {TypeIndex::DateV2};
+ DataSet new_data_set = {{{std::string("1989-03-21")}, 198912},
+ {{std::string("")}, Null()},
+ {{std::string("9999-12-12")}, 999950}};
- check_function<DataTypeInt32, true>(func_name, new_input_types, new_data_set);
+ check_function<DataTypeInt32, true>(func_name, new_input_types, new_data_set);
+ }
+ {
+ InputTypeSet new_input_types = {TypeIndex::DateTimeV2};
+ DataSet new_data_set = {{{std::string("1989-03-21 00:00:11.123")}, 198912},
+ {{std::string("")}, Null()},
+ {{std::string("9999-12-12 00:00:11.123")}, 999950}};
+
+ check_function<DataTypeInt32, true>(func_name, new_input_types, new_data_set);
+ }
}
TEST(VTimestampFunctionsTest, str_to_date_test) {
@@ -1069,14 +1556,26 @@ TEST(VTimestampFunctionsTest, from_days_test) {
TEST(VTimestampFunctionsTest, weekday_v2_test) {
std::string func_name = "weekday";
- InputTypeSet input_types = {TypeIndex::DateV2};
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2};
- DataSet data_set = {{{std::string("2001-02-03")}, 5},
- {{std::string("2019-06-25")}, 1},
- {{std::string("2020-00-01")}, Null()},
- {{std::string("2020-01-00")}, Null()}};
+ DataSet data_set = {{{std::string("2001-02-03")}, 5},
+ {{std::string("2019-06-25")}, 1},
+ {{std::string("2020-00-01")}, Null()},
+ {{std::string("2020-01-00")}, Null()}};
- check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2001-02-03 00:00:11.123")}, 5},
+ {{std::string("2019-06-25 00:00:11.123")}, 1},
+ {{std::string("2020-00-01 00:00:11.123")}, Null()},
+ {{std::string("2020-01-00 00:00:11.123")}, Null()}};
+
+ check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+ }
}
TEST(VTimestampFunctionsTest, dayname_test) {
@@ -1108,6 +1607,214 @@ TEST(VTimestampFunctionsTest, dayname_test) {
check_function<DataTypeString, true>(func_name, input_types, data_set);
}
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2};
+
+ DataSet data_set = {{{std::string("2007-02-03 00:00:11.123")}, std::string("Saturday")},
+ {{std::string("2020-01-00 00:00:11.123")}, Null()}};
+
+ check_function<DataTypeString, true>(func_name, input_types, data_set);
+ }
+}
+
+TEST(VTimestampFunctionsTest, hours_add_v2_test) {
+ std::string func_name = "hours_add";
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23 10:00:00.123"), -4},
+ str_to_datetime_v2("2020-10-23 06:00:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 10:00:00.123"), 4},
+ str_to_datetime_v2("2020-05-23 14:00:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 10:00:00.123"), 100},
+ str_to_datetime_v2("2020-05-27 14:00:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23"), -4},
+ str_to_datetime_v2("2020-10-22 20:00:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23"), 4},
+ str_to_datetime_v2("2020-05-23 04:00:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100},
+ str_to_datetime_v2("2020-05-27 04:00:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+}
+
+TEST(VTimestampFunctionsTest, hours_sub_v2_test) {
+ std::string func_name = "hours_sub";
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 10:00:00.123"), 4},
+ str_to_datetime_v2("2020-05-23 06:00:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 10:00:00.123"), -4},
+ str_to_datetime_v2("2020-05-23 14:00:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 10:00:00.123"), 31},
+ str_to_datetime_v2("2020-05-22 03:00:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23"), 4},
+ str_to_datetime_v2("2020-05-22 20:00:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23"), -4},
+ str_to_datetime_v2("2020-05-23 04:00:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 31},
+ str_to_datetime_v2("2020-05-21 17:00:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+}
+
+TEST(VTimestampFunctionsTest, minutes_add_v2_test) {
+ std::string func_name = "minutes_add";
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23 10:00:00.123"), 40},
+ str_to_datetime_v2("2020-10-23 10:40:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 10:00:00.123"), -40},
+ str_to_datetime_v2("2020-05-23 09:20:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 10:00:00.123"), 100},
+ str_to_datetime_v2("2020-05-23 11:40:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23"), 40},
+ str_to_datetime_v2("2020-10-23 00:40:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23"), -40},
+ str_to_datetime_v2("2020-05-22 23:20:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100},
+ str_to_datetime_v2("2020-05-23 01:40:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+}
+
+TEST(VTimestampFunctionsTest, minutes_sub_v2_test) {
+ std::string func_name = "minutes_sub";
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 10:00:00.123"), 40},
+ str_to_datetime_v2("2020-05-23 09:20:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 10:00:00.123"), -40},
+ str_to_datetime_v2("2020-05-23 10:40:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 10:00:00.123"), 100},
+ str_to_datetime_v2("2020-05-23 08:20:00.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23"), 40},
+ str_to_datetime_v2("2020-05-22 23:20:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23"), -40},
+ str_to_datetime_v2("2020-05-23 00:40:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100},
+ str_to_datetime_v2("2020-05-22 22:20:00", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+}
+
+TEST(VTimestampFunctionsTest, seconds_add_v2_test) {
+ std::string func_name = "seconds_add";
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23 10:00:00.123"), 40},
+ str_to_datetime_v2("2020-10-23 10:00:40.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 10:00:00.123"), -40},
+ str_to_datetime_v2("2020-05-23 09:59:20.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 10:00:00.123"), 100},
+ str_to_datetime_v2("2020-05-23 10:01:40.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-10-23"), 40},
+ str_to_datetime_v2("2020-10-23 00:00:40", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23"), -40},
+ str_to_datetime_v2("2020-05-22 23:59:20", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100},
+ str_to_datetime_v2("2020-05-23 00:01:40", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+}
+
+TEST(VTimestampFunctionsTest, seconds_sub_v2_test) {
+ std::string func_name = "seconds_sub";
+
+ {
+ InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23 10:00:00.123"), 40},
+ str_to_datetime_v2("2020-05-23 09:59:20.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23 10:00:00.123"), -40},
+ str_to_datetime_v2("2020-05-23 10:00:40.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23 10:00:00.123"), 100},
+ str_to_datetime_v2("2020-05-23 09:58:20.123", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
+ {
+ InputTypeSet input_types = {TypeIndex::DateV2, TypeIndex::Int32};
+
+ DataSet data_set = {{{std::string("2020-05-23"), 40},
+ str_to_datetime_v2("2020-05-22 23:59:20", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string("2020-05-23"), -40},
+ str_to_datetime_v2("2020-05-23 00:00:40", "%Y-%m-%d %H:%i:%s.%f")},
+ {{std::string(""), 4}, Null()},
+ {{std::string("2020-05-23"), 100},
+ str_to_datetime_v2("2020-05-22 23:58:20", "%Y-%m-%d %H:%i:%s.%f")},
+ {{Null(), 4}, Null()}};
+
+ check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set);
+ }
}
} // namespace doris::vectorized
diff --git a/gensrc/script/doris_builtins_functions.py b/gensrc/script/doris_builtins_functions.py
index bdc1e54ac7..041fcb4e97 100755
--- a/gensrc/script/doris_builtins_functions.py
+++ b/gensrc/script/doris_builtins_functions.py
@@ -126,6 +126,8 @@ visible_functions = [
[['element_at', '%element_extract%'], 'LARGEINT', ['ARRAY_LARGEINT', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['element_at', '%element_extract%'], 'DATETIME', ['ARRAY_DATETIME', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['element_at', '%element_extract%'], 'DATE', ['ARRAY_DATE', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['element_at', '%element_extract%'], 'DATETIMEV2', ['ARRAY_DATETIMEV2', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['element_at', '%element_extract%'], 'DATEV2', ['ARRAY_DATEV2', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['element_at', '%element_extract%'], 'FLOAT', ['ARRAY_FLOAT', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['element_at', '%element_extract%'], 'DOUBLE', ['ARRAY_DOUBLE', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['element_at', '%element_extract%'], 'DECIMALV2', ['ARRAY_DECIMALV2', 'BIGINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
@@ -139,6 +141,8 @@ visible_functions = [
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATETIME', 'ARRAY_DATETIME'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATE', 'ARRAY_DATE'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATEV2', 'ARRAY_DATEV2'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], '', '', '', 'vec', 'ALWAYS_NULLABLE'],
@@ -152,6 +156,8 @@ visible_functions = [
[['array_contains'], 'BOOLEAN', ['ARRAY_LARGEINT', 'LARGEINT'], '', '', '', 'vec', ''],
[['array_contains'], 'BOOLEAN', ['ARRAY_DATETIME', 'DATETIME'], '', '', '', 'vec', ''],
[['array_contains'], 'BOOLEAN', ['ARRAY_DATE', 'DATE'], '', '', '', 'vec', ''],
+ [['array_contains'], 'BOOLEAN', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_contains'], 'BOOLEAN', ['ARRAY_DATEV2', 'DATEV2'], '', '', '', 'vec', ''],
[['array_contains'], 'BOOLEAN', ['ARRAY_FLOAT', 'FLOAT'], '', '', '', 'vec', ''],
[['array_contains'], 'BOOLEAN', ['ARRAY_DOUBLE', 'DOUBLE'], '', '', '', 'vec', ''],
[['array_contains'], 'BOOLEAN', ['ARRAY_DECIMALV2', 'DECIMALV2'], '', '', '', 'vec', ''],
@@ -166,6 +172,8 @@ visible_functions = [
[['array_position'], 'BIGINT', ['ARRAY_LARGEINT', 'LARGEINT'], '', '', '', 'vec', ''],
[['array_position'], 'BIGINT', ['ARRAY_DATETIME', 'DATETIME'], '', '', '', 'vec', ''],
[['array_position'], 'BIGINT', ['ARRAY_DATE', 'DATE'], '', '', '', 'vec', ''],
+ [['array_position'], 'BIGINT', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_position'], 'BIGINT', ['ARRAY_DATEV2', 'DATEV2'], '', '', '', 'vec', ''],
[['array_position'], 'BIGINT', ['ARRAY_FLOAT', 'FLOAT'], '', '', '', 'vec', ''],
[['array_position'], 'BIGINT', ['ARRAY_DOUBLE', 'DOUBLE'], '', '', '', 'vec', ''],
[['array_position'], 'BIGINT', ['ARRAY_DECIMALV2', 'DECIMALV2'], '', '', '', 'vec', ''],
@@ -180,6 +188,8 @@ visible_functions = [
[['array_distinct'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], '', '', '', 'vec', ''],
[['array_distinct'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], '', '', '', 'vec', ''],
[['array_distinct'], 'ARRAY_DATE', ['ARRAY_DATE'], '', '', '', 'vec', ''],
+ [['array_distinct'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_distinct'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], '', '', '', 'vec', ''],
[['array_distinct'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], '', '', '', 'vec', ''],
[['array_distinct'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], '', '', '', 'vec', ''],
[['array_distinct'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], '', '', '', 'vec', ''],
@@ -193,6 +203,8 @@ visible_functions = [
[['array_sort'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], '', '', '', 'vec', ''],
[['array_sort'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], '', '', '', 'vec', ''],
[['array_sort'], 'ARRAY_DATE', ['ARRAY_DATE'], '', '', '', 'vec', ''],
+ [['array_sort'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_sort'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], '', '', '', 'vec', ''],
[['array_sort'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], '', '', '', 'vec', ''],
[['array_sort'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], '', '', '', 'vec', ''],
[['array_sort'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], '', '', '', 'vec', ''],
@@ -235,6 +247,8 @@ visible_functions = [
[['array_remove'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'DECIMALV2'], '', '', '', 'vec', ''],
[['array_remove'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'DATETIME'], '', '', '', 'vec', ''],
[['array_remove'], 'ARRAY_DATE', ['ARRAY_DATE', 'DATE'], '', '', '', 'vec', ''],
+ [['array_remove'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_remove'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'DATEV2'], '', '', '', 'vec', ''],
[['array_remove'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'VARCHAR'], '', '', '', 'vec', ''],
[['array_remove'], 'ARRAY_STRING', ['ARRAY_STRING', 'STRING'], '', '', '', 'vec', ''],
@@ -248,6 +262,8 @@ visible_functions = [
[['array_union'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], '', '', '', 'vec', ''],
[['array_union'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'ARRAY_DATETIME'], '', '', '', 'vec', ''],
[['array_union'], 'ARRAY_DATE', ['ARRAY_DATE', 'ARRAY_DATE'], '', '', '', 'vec', ''],
+ [['array_union'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_union'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'ARRAY_DATEV2'], '', '', '', 'vec', ''],
[['array_union'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR'], '', '', '', 'vec', ''],
[['array_union'], 'ARRAY_STRING', ['ARRAY_STRING', 'ARRAY_STRING'], '', '', '', 'vec', ''],
@@ -261,6 +277,8 @@ visible_functions = [
[['array_except'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], '', '', '', 'vec', ''],
[['array_except'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'ARRAY_DATETIME'], '', '', '', 'vec', ''],
[['array_except'], 'ARRAY_DATE', ['ARRAY_DATE', 'ARRAY_DATE'], '', '', '', 'vec', ''],
+ [['array_except'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_except'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'ARRAY_DATEV2'], '', '', '', 'vec', ''],
[['array_except'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR'], '', '', '', 'vec', ''],
[['array_except'], 'ARRAY_STRING', ['ARRAY_STRING', 'ARRAY_STRING'], '', '', '', 'vec', ''],
@@ -274,6 +292,8 @@ visible_functions = [
[['array_intersect'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], '', '', '', 'vec', ''],
[['array_intersect'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'ARRAY_DATETIME'], '', '', '', 'vec', ''],
[['array_intersect'], 'ARRAY_DATE', ['ARRAY_DATE', 'ARRAY_DATE'], '', '', '', 'vec', ''],
+ [['array_intersect'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], '', '', '', 'vec', ''],
+ [['array_intersect'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'ARRAY_DATEV2'], '', '', '', 'vec', ''],
[['array_intersect'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR'], '', '', '', 'vec', ''],
[['array_intersect'], 'ARRAY_STRING', ['ARRAY_STRING', 'ARRAY_STRING'], '', '', '', 'vec', ''],
@@ -287,6 +307,12 @@ visible_functions = [
[['unix_timestamp'], 'INT', ['DATE'],
'_ZN5doris18TimestampFunctions7to_unixEPN9doris_udf15FunctionContextERKNS1_11DateTimeValE',
'', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['unix_timestamp'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions7to_unixEPN9doris_udf15FunctionContextERKNS1_11DateV2TimeValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['unix_timestamp'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions7to_unixEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
[['unix_timestamp'], 'INT', ['VARCHAR', 'VARCHAR'],
'_ZN5doris18TimestampFunctions7to_unixEPN9doris_udf15FunctionContextERKNS1_9StringValES6_',
'', '', 'vec', 'ALWAYS_NULLABLE'],
@@ -313,6 +339,9 @@ visible_functions = [
[['now', 'current_timestamp', 'localtime', 'localtimestamp'], 'DATETIME', [],
'_ZN5doris18TimestampFunctions3nowEPN9doris_udf15FunctionContextE',
'', '', 'vec', 'ALWAYS_NOT_NULLABLE'],
+ [['now', 'current_timestamp', 'localtime', 'localtimestamp'], 'DATETIMEV2', [],
+ '_ZN5doris18TimestampFunctions3nowEPN9doris_udf15FunctionContextE',
+ '', '', 'vec', 'ALWAYS_NOT_NULLABLE'],
[['curtime', 'current_time'], 'TIME', [],
'_ZN5doris18TimestampFunctions7curtimeEPN9doris_udf15FunctionContextE',
'', '', 'vec', 'ALWAYS_NOT_NULLABLE'],
@@ -682,6 +711,857 @@ visible_functions = [
'_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeValERKNS1_6IntValES6_',
'', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['curdate', 'current_date'], 'DATEV2', [],
+ '_ZN5doris18TimestampFunctions7curdateEPN9doris_udf15FunctionContextE',
+ '', '', 'vec', 'ALWAYS_NOT_NULLABLE'],
+ [['utc_timestamp'], 'DATETIMEV2', [],
+ '_ZN5doris18TimestampFunctions13utc_timestampEPN9doris_udf15FunctionContextE',
+ '', '', 'vec', 'ALWAYS_NOT_NULLABLE'],
+ [['timestamp'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9timestampEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['from_days'], 'DATEV2', ['INT'],
+ '_ZN5doris18TimestampFunctions9from_daysEPN9doris_udf15FunctionContextERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['to_days'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions7to_daysEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['year'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions4yearEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions5monthEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['quarter'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions7quarterEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['dayofweek'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11day_of_weekEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weekday'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions8week_dayEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day', 'dayofmonth'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12day_of_monthEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['dayofyear'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11day_of_yearEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weekofyear'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12week_of_yearEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['yearweek'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9year_weekEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['yearweek'], 'INT', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9year_weekEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions4weekEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week'], 'INT', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions4weekEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions4hourEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions6minuteEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second'], 'INT', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions6secondEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['year'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions4yearEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions5monthEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['quarter'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions7quarterEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['dayofweek'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions11day_of_weekEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weekday'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions8week_dayEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day', 'dayofmonth'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions12day_of_monthEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['dayofyear'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions11day_of_yearEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weekofyear'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions12week_of_yearEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['yearweek'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions9year_weekEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['yearweek'], 'INT', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9year_weekEPN9doris_udf15FunctionContextERKNS1_11DateV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions4weekEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week'], 'INT', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions4weekEPN9doris_udf15FunctionContextERKNS1_11DateV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions4hourEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions6minuteEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second'], 'INT', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions6secondEPN9doris_udf15FunctionContextERKNS1_11DateV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['makedate'], 'DATETIMEV2', ['INT', 'INT'],
+ '_ZN5doris18TimestampFunctions9make_dateEPN9doris_udf15FunctionContextERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['years_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9years_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['years_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9years_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_add', 'add_months'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10months_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10months_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9weeks_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9weeks_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_add', 'date_add', 'adddate'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions8days_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_sub', 'date_sub', 'subdate'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions8days_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9hours_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9hours_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11minutes_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11minutes_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11seconds_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11seconds_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['microseconds_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10micros_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', '', ''],
+ [['microseconds_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10micros_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', '', ''],
+
+ [['makedate'], 'DATEV2', ['INT', 'INT'],
+ '_ZN5doris18TimestampFunctions9make_dateEPN9doris_udf15FunctionContextERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['years_add'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9years_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['years_sub'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9years_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_add', 'add_months'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10months_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_sub'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10months_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_add'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9weeks_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_sub'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9weeks_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_add', 'date_add', 'adddate'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions8days_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_sub', 'date_sub', 'subdate'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions8days_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_add'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9hours_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_sub'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9hours_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_add'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11minutes_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_sub'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11minutes_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_add'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11seconds_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_sub'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11seconds_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['microseconds_add'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10micros_addEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', '', ''],
+ [['microseconds_sub'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10micros_subEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', '', ''],
+
+ [['datediff'], 'INT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9date_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['timediff'], 'TIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9time_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['datediff'], 'INT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9date_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['timediff'], 'TIMEV2', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9time_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['datediff'], 'INT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9date_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['timediff'], 'TIMEV2', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9time_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['datediff'], 'INT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9date_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['timediff'], 'TIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9time_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['datediff'], 'INT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions9date_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['timediff'], 'TIMEV2', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions9time_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['datediff'], 'INT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions9date_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['timediff'], 'TIMEV2', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions9time_diffEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['str_to_date'], 'DATETIMEV2', ['VARCHAR', 'VARCHAR'],
+ '_ZN5doris18TimestampFunctions11str_to_dateEPN9doris_udf'
+ '15FunctionContextERKNS1_9StringValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['str_to_date'], 'DATETIMEV2', ['STRING', 'STRING'],
+ '_ZN5doris18TimestampFunctions11str_to_dateEPN9doris_udf'
+ '15FunctionContextERKNS1_9StringValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['date_format'], 'VARCHAR', ['DATETIMEV2', 'VARCHAR'],
+ '_ZN5doris18TimestampFunctions11date_formatEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_9StringValE',
+ '_ZN5doris18TimestampFunctions14format_prepareEPN9doris_udf'
+ '15FunctionContextENS2_18FunctionStateScopeE',
+ '_ZN5doris18TimestampFunctions12format_closeEPN9doris_udf'
+ '15FunctionContextENS2_18FunctionStateScopeE', 'vec', 'ALWAYS_NULLABLE'],
+ [['date_format'], 'VARCHAR', ['DATEV2', 'VARCHAR'],
+ '_ZN5doris18TimestampFunctions11date_formatEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValERKNS1_9StringValE',
+ '_ZN5doris18TimestampFunctions14format_prepareEPN9doris_udf'
+ '15FunctionContextENS2_18FunctionStateScopeE',
+ '_ZN5doris18TimestampFunctions12format_closeEPN9doris_udf'
+ '15FunctionContextENS2_18FunctionStateScopeE', 'vec', 'ALWAYS_NULLABLE'],
+ [['date', 'to_date'], 'DATEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions7to_dateEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['dayname'], 'VARCHAR', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions8day_nameEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['monthname'], 'VARCHAR', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10month_nameEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['dayname'], 'VARCHAR', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions8day_nameEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['monthname'], 'VARCHAR', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions10month_nameEPN9doris_udf'
+ '15FunctionContextERKNS1_11DateTimeV2ValE', '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['convert_tz'], 'DATETIMEV2', ['DATETIMEV2', 'VARCHAR', 'VARCHAR'],
+ '_ZN5doris18TimestampFunctions10convert_tzEPN9doris_udf15FunctionContextERKNS1_11DateV2ValERKNS1_9StringValES9_',
+ '_ZN5doris18TimestampFunctions18convert_tz_prepareEPN9doris_udf15FunctionContextENS2_18FunctionStateScopeE',
+ '_ZN5doris18TimestampFunctions16convert_tz_closeEPN9doris_udf15FunctionContextENS2_18FunctionStateScopeE',
+ 'vec', 'ALWAYS_NULLABLE'],
+
+ [['convert_tz'], 'DATEV2', ['DATEV2', 'VARCHAR', 'VARCHAR'],
+ '_ZN5doris18TimestampFunctions10convert_tzEPN9doris_udf15FunctionContextERKNS1_11DateV2ValERKNS1_9StringValES9_',
+ '_ZN5doris18TimestampFunctions18convert_tz_prepareEPN9doris_udf15FunctionContextENS2_18FunctionStateScopeE',
+ '_ZN5doris18TimestampFunctions16convert_tz_closeEPN9doris_udf15FunctionContextENS2_18FunctionStateScopeE',
+ 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATETIME', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIME'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['years_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10years_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['months_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11months_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['weeks_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10weeks_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['days_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9days_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hours_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10hours_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minutes_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12minutes_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['seconds_diff'], 'BIGINT', ['DATETIME', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12seconds_diffEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['year_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
+ [['year_floor'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_floor'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_floor'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10year_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['year_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9year_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11month_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['month_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10month_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10week_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['week_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9week_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9day_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['day_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions8day_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_floor'], 'DATETIMEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions10hour_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['hour_ceil'], 'DATETIMEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions9hour_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_floor'], 'DATETIMEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12minute_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['minute_ceil'], 'DATETIMEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11minute_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_floor'], 'DATETIMEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions12second_floorEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATEV2'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATEV2', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATEV2', 'INT'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValE',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+ [['second_ceil'], 'DATETIMEV2', ['DATEV2', 'INT', 'DATEV2'],
+ '_ZN5doris18TimestampFunctions11second_ceilEPN9doris_udf15FunctionContextERKNS1_11DateTimeV2ValERKNS1_6IntValES6_',
+ '', '', 'vec', 'ALWAYS_NULLABLE'],
+
# Math builtin functions
[['pi'], 'DOUBLE', [],
'_ZN5doris13MathFunctions2piEPN9doris_udf15FunctionContextE', '', '', 'vec', 'ALWAYS_NOT_NULLABLE'],
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org