summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <ram@gw.mysql.r18.ru>2004-05-18 12:16:00 +0500
committerunknown <ram@gw.mysql.r18.ru>2004-05-18 12:16:00 +0500
commit4471aadb7cc34dedbd29f15c372e72f5c468f5b6 (patch)
tree5e23ee93b1f002b7db8821ca317fc8ccee130dd5
parent8ef62cc1ef3e2b16795fa5fbbc45bcdf422f344c (diff)
downloadmariadb-git-4471aadb7cc34dedbd29f15c372e72f5c468f5b6.tar.gz
A fix (Bug #3728: Missing warning in 4.1).
-rw-r--r--mysql-test/r/type_datetime.result6
-rw-r--r--sql/field.cc5
-rw-r--r--sql/time.cc2
3 files changed, 12 insertions, 1 deletions
diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result
index cc29c676283..66eb744e7ce 100644
--- a/mysql-test/r/type_datetime.result
+++ b/mysql-test/r/type_datetime.result
@@ -35,6 +35,12 @@ Table Op Msg_type Msg_text
test.t1 check status OK
delete from t1;
insert into t1 values("000101"),("691231"),("700101"),("991231"),("00000101"),("00010101"),("99991231"),("00101000000"),("691231000000"),("700101000000"),("991231235959"),("10000101000000"),("99991231235959"),("20030102030460"),("20030102036301"),("20030102240401"),("20030132030401"),("20031302030460");
+Warnings:
+Warning 1264 Data truncated, out of range for column 't' at row 14
+Warning 1264 Data truncated, out of range for column 't' at row 15
+Warning 1264 Data truncated, out of range for column 't' at row 16
+Warning 1264 Data truncated, out of range for column 't' at row 17
+Warning 1264 Data truncated, out of range for column 't' at row 18
select * from t1;
t
2000-01-01 00:00:00
diff --git a/sql/field.cc b/sql/field.cc
index 1ad7e039363..944f18080f6 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -3930,6 +3930,11 @@ void Field_newdate::sql_type(String &res) const
int Field_datetime::store(const char *from,uint len,CHARSET_INFO *cs)
{
longlong tmp=str_to_datetime(from,len,1);
+ if (tmp < 0)
+ {
+ set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
+ tmp= 0;
+ }
#ifdef WORDS_BIGENDIAN
if (table->db_low_byte_first)
{
diff --git a/sql/time.cc b/sql/time.cc
index 7fb466f6b97..a5e081dfb30 100644
--- a/sql/time.cc
+++ b/sql/time.cc
@@ -667,7 +667,7 @@ longlong str_to_datetime(const char *str,uint length, uint fuzzy_date)
{
TIME l_time;
if (str_to_TIME(str,length,&l_time,fuzzy_date) <= TIMESTAMP_DATETIME_ERROR)
- return(0);
+ return -1;
return (longlong) (l_time.year*LL(10000000000) +
l_time.month*LL(100000000)+
l_time.day*LL(1000000)+