diff options
author | Alexander Barkov <bar@mariadb.com> | 2018-10-01 12:34:03 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2018-10-01 12:34:03 +0400 |
commit | e5aebc1408f1413f6251400956da872c9b4f51b6 (patch) | |
tree | a69ac2523b4fea8915cb62490c9033da7cb154f8 /sql/item_timefunc.cc | |
parent | f79bab3ae68393cb2f36fa83546e8ea02b7d0420 (diff) | |
download | mariadb-git-e5aebc1408f1413f6251400956da872c9b4f51b6.tar.gz |
A cleanup for MDEV-17317 Add THD* parameter into Item::get_date() and stricter data type control to "fuzzydate"
Fixing C++ function check_date() to get the "fuzzydate" as
date_mode_t rather than ulonglong, so conversion from
date_time_t to ulonglong is now done inside C++ check_date(),
and no conversion is needed in the callers' code.
As an additional safety, modified the code not to pass
TIME_FUZZY_DATE to the low level C functions:
- check_date()
- str_to_datetime()
- str_to_time()
- number_to_datetime()
because TIME_FUZZY_DATE is known only on the C++ level,
C functions do not know it.
Soon we'll be adding more flags into the C++ level (i.e. to date_time_t),
e.g. for rounding. It's a good idea to prevent passing C++ specific
flags into pure C routines before this change.
Asserts were added into the affected C functions to verify
that the caller passed only known C level flags.
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r-- | sql/item_timefunc.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 94757e16d41..6d88ef2185a 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -441,7 +441,7 @@ static bool extract_date_time(THD *thd, DATE_TIME_FORMAT *format, goto err; int was_cut; - if (check_date(l_time, ulonglong(fuzzydate | TIME_INVALID_DATES), &was_cut)) + if (check_date(l_time, fuzzydate | TIME_INVALID_DATES, &was_cut)) goto err; if (val != val_end) |