1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

bug #16546 (DATETIME + 0 not always coerced in the same way)

fix for cast( AS DATETIME) + 0 operation.
  I just implemented Item_datetime_typecast::val() method
  as it is usually done in other classes.
  Should be fixed more radically in 5.0
This commit is contained in:
holyfoot/hf@mysql.com/hfmain.(none)
2007-03-22 12:24:56 +04:00
parent 55d9c2dd07
commit e0f0507f99
3 changed files with 16 additions and 0 deletions

View File

@ -166,3 +166,6 @@ dt
0000-00-00 00:00:00 0000-00-00 00:00:00
0000-00-00 00:00:00 0000-00-00 00:00:00
drop table t1; drop table t1;
select cast('2006-12-05 22:10:10' as datetime) + 0;
cast('2006-12-05 22:10:10' as datetime) + 0
20061205221010.000000

View File

@ -113,4 +113,10 @@ insert into t1 values ("00-00-00"), ("00-00-00 00:00:00");
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# Bug #16546 DATETIME+0 not always coerced the same way
#
select cast('2006-12-05 22:10:10' as datetime) + 0;
# End of 4.1 tests # End of 4.1 tests

View File

@ -751,12 +751,19 @@ public:
String *val_str(String *str); String *val_str(String *str);
const char *cast_type() const { return "datetime"; } const char *cast_type() const { return "datetime"; }
enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; } enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; }
void fix_length_and_dec()
{
Item_typecast_maybe_null::fix_length_and_dec();
decimals= DATETIME_DEC;
}
Field *tmp_table_field(TABLE *t_arg) Field *tmp_table_field(TABLE *t_arg)
{ {
return (new Field_datetime(maybe_null, name, t_arg, &my_charset_bin)); return (new Field_datetime(maybe_null, name, t_arg, &my_charset_bin));
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
longlong val_int(); longlong val_int();
double val() { return (double) val_int(); }
}; };
class Item_func_makedate :public Item_str_func class Item_func_makedate :public Item_str_func