diff options
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/sql/field.cc b/sql/field.cc index 973170223e4..379d58e1d24 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2953,18 +2953,18 @@ int Field_tiny::store(double nr) } else if (nr > 255.0) { - *ptr=(char) 255; + *ptr= (uchar) 255; set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); error= 1; } else - *ptr=(char) nr; + *ptr= (uchar) nr; } else { if (nr < -128.0) { - *ptr= (char) -128; + *ptr= (uchar) -128; set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); error= 1; } @@ -2975,7 +2975,7 @@ int Field_tiny::store(double nr) error= 1; } else - *ptr=(char) (int) nr; + *ptr=(uchar) (int) nr; } return error; } @@ -5393,7 +5393,7 @@ int Field_year::store(const char *from, uint len,CHARSET_INFO *cs) int Field_year::store(double nr) { - if (nr < 0.0 || nr >= 2155.0) + if (nr < 0.0 || nr > 2155.0) { (void) Field_year::store((longlong) -1, FALSE); return 1; @@ -5514,7 +5514,6 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs) int Field_date::store(double nr) { longlong tmp; - int error= 0; if (nr >= 19000000000000.0 && nr <= 99991231235959.0) nr=floor(nr/1000000.0); // Timestamp to date if (nr < 0.0 || nr > 99991231.0) @@ -5523,7 +5522,6 @@ int Field_date::store(double nr) set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, nr, MYSQL_TIMESTAMP_DATE); - error= 1; } else tmp= (longlong) rint(nr); @@ -9782,9 +9780,8 @@ bool Create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, } break; case MYSQL_TYPE_DATE: - /* Old date type. */ - if (protocol_version != PROTOCOL_VERSION-1) - sql_type= MYSQL_TYPE_NEWDATE; + /* We don't support creation of MYSQL_TYPE_DATE anymore */ + sql_type= MYSQL_TYPE_NEWDATE; /* fall trough */ case MYSQL_TYPE_NEWDATE: length= 10; |