summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2015-09-23 20:42:28 +0400
committerAlexander Barkov <bar@mariadb.org>2015-09-23 20:42:28 +0400
commit3ad035f66b74284f515b2786f7d4553dba5c14a2 (patch)
tree4112fdc64b1dd77aa31389e6a92e0bda7cbaba49 /sql/field.cc
parentb9da3ba45e6a6bad152203f56af47abe79e550ad (diff)
downloadmariadb-git-3ad035f66b74284f515b2786f7d4553dba5c14a2.tar.gz
MDEV-8658 DATE(zerofill_column) and DATE(COALESCE(zerofill_column)) return different results
MDEV-8660 TIME(int_zerofill_column) returns a wrong result
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 5ba155d1315..5b33d809ef0 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -1992,6 +1992,16 @@ my_decimal* Field_num::val_decimal(my_decimal *decimal_value)
}
+bool Field_num::get_date(MYSQL_TIME *ltime,ulonglong fuzzydate)
+{
+ ASSERT_COLUMN_MARKED_FOR_READ;
+ longlong nr= val_int();
+ bool neg= !(flags & UNSIGNED_FLAG) && nr < 0;
+ return int_to_datetime_with_warn(neg, neg ? -nr : nr, ltime, fuzzydate,
+ field_name);
+}
+
+
Field_str::Field_str(uchar *ptr_arg,uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg, utype unireg_check_arg,
const char *field_name_arg, CHARSET_INFO *charset_arg)
@@ -3217,6 +3227,14 @@ String *Field_new_decimal::val_str(String *val_buffer,
}
+bool Field_new_decimal::get_date(MYSQL_TIME *ltime, ulonglong fuzzydate)
+{
+ my_decimal value;
+ return decimal_to_datetime_with_warn(val_decimal(&value),
+ ltime, fuzzydate, field_name);
+}
+
+
int Field_new_decimal::cmp(const uchar *a,const uchar*b)
{
return memcmp(a, b, bin_size);