From d67dcb7bb5f8058a1c6c2f44b8b31faeefdca94b Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Sun, 4 Feb 2018 22:55:54 +0400 Subject: [PATCH] MDEV-15205 Remove mysql_type_to_time_type() --- sql/field.cc | 13 ++++++------- sql/field.h | 31 ------------------------------- sql/sql_time.cc | 9 ++++----- 3 files changed, 10 insertions(+), 43 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index f6c48d7792bcf..f48638d81dc14 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5489,11 +5489,9 @@ void Field_temporal::set_warnings(Sql_condition::enum_warning_level trunc_level, a DATE field and non-zero time part is thrown away. */ if (was_cut & MYSQL_TIME_WARN_TRUNCATED) - set_datetime_warning(trunc_level, WARN_DATA_TRUNCATED, - str, mysql_type_to_time_type(type()), 1); + set_datetime_warning(trunc_level, WARN_DATA_TRUNCATED, str, ts_type, 1); if (was_cut & MYSQL_TIME_WARN_OUT_OF_RANGE) - set_datetime_warning(ER_WARN_DATA_OUT_OF_RANGE, - str, mysql_type_to_time_type(type()), 1); + set_datetime_warning(ER_WARN_DATA_OUT_OF_RANGE, str, ts_type, 1); } @@ -5529,14 +5527,15 @@ int Field_temporal_with_date::store_TIME_with_warning(MYSQL_TIME *ltime, } else if (!MYSQL_TIME_WARN_HAVE_WARNINGS(was_cut) && (MYSQL_TIME_WARN_HAVE_NOTES(was_cut) || - (mysql_type_to_time_type(type()) == MYSQL_TIMESTAMP_DATE && + (type_handler()->mysql_timestamp_type() == MYSQL_TIMESTAMP_DATE && (ltime->hour || ltime->minute || ltime->second || ltime->second_part)))) { trunc_level= Sql_condition::WARN_LEVEL_NOTE; was_cut|= MYSQL_TIME_WARN_TRUNCATED; ret= 3; } - set_warnings(trunc_level, str, was_cut, mysql_type_to_time_type(type())); + set_warnings(trunc_level, str, was_cut, + type_handler()->mysql_timestamp_type()); store_TIME(ltime); return was_cut ? ret : 0; } @@ -5626,7 +5625,7 @@ my_decimal *Field_temporal::val_decimal(my_decimal *d) if (get_date(<ime, 0)) { bzero(<ime, sizeof(ltime)); - ltime.time_type= mysql_type_to_time_type(type()); + ltime.time_type= type_handler()->mysql_timestamp_type(); } return TIME_to_my_decimal(<ime, d); } diff --git a/sql/field.h b/sql/field.h index 281e95c31bb63..7fb746d737974 100644 --- a/sql/field.h +++ b/sql/field.h @@ -488,37 +488,6 @@ inline enum_field_types real_type_to_type(enum_field_types real_type) } -static inline enum enum_mysql_timestamp_type -mysql_type_to_time_type(enum enum_field_types mysql_type) -{ - switch(mysql_type) { - case MYSQL_TYPE_TIME2: - case MYSQL_TYPE_TIME: return MYSQL_TIMESTAMP_TIME; - case MYSQL_TYPE_TIMESTAMP2: - case MYSQL_TYPE_TIMESTAMP: - case MYSQL_TYPE_DATETIME2: - case MYSQL_TYPE_DATETIME: return MYSQL_TIMESTAMP_DATETIME; - case MYSQL_TYPE_NEWDATE: - case MYSQL_TYPE_DATE: return MYSQL_TIMESTAMP_DATE; - default: return MYSQL_TIMESTAMP_ERROR; - } -} - - -/** - Tests if field type is temporal, i.e. represents - DATE, TIME, DATETIME or TIMESTAMP types in SQL. - - @param type Field type, as returned by field->type(). - @retval true If field type is temporal - @retval false If field type is not temporal -*/ -inline bool is_temporal_type(enum_field_types type) -{ - return mysql_type_to_time_type(type) != MYSQL_TIMESTAMP_ERROR; -} - - enum enum_vcol_info_type { VCOL_GENERATED_VIRTUAL, VCOL_GENERATED_STORED, diff --git a/sql/sql_time.cc b/sql/sql_time.cc index 24aa7b1b8a62e..986be049810ce 100644 --- a/sql/sql_time.cc +++ b/sql/sql_time.cc @@ -357,19 +357,19 @@ static bool number_to_time_with_warn(bool neg, ulonglong nr, ulong sec_part, { int was_cut; longlong res; - enum_field_types f_type; + enum_mysql_timestamp_type ts_type; bool have_warnings; if (fuzzydate & TIME_TIME_ONLY) { fuzzydate= TIME_TIME_ONLY; // clear other flags - f_type= MYSQL_TYPE_TIME; + ts_type= MYSQL_TIMESTAMP_TIME; res= number_to_time(neg, nr, sec_part, ltime, &was_cut); have_warnings= MYSQL_TIME_WARN_HAVE_WARNINGS(was_cut); } else { - f_type= MYSQL_TYPE_DATETIME; + ts_type= MYSQL_TIMESTAMP_DATETIME; if (neg) { res= -1; @@ -385,8 +385,7 @@ static bool number_to_time_with_warn(bool neg, ulonglong nr, ulong sec_part, { make_truncated_value_warning(current_thd, Sql_condition::WARN_LEVEL_WARN, str, - res < 0 ? MYSQL_TIMESTAMP_ERROR - : mysql_type_to_time_type(f_type), + res < 0 ? MYSQL_TIMESTAMP_ERROR : ts_type, field_name); } return res < 0;