mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Enabled more tests of STR_TO_DATE()
Fixed that datetime gives warning for zero dates in traditional mode mysql-test/r/strict.result: Enabled more tests of STR_TO_DATE() mysql-test/t/strict.test: Enabled more tests of STR_TO_DATE() sql/field.cc: Fixed that datetime gives warning for zero dates in traditional mode sql/log_event.h: Fix wrong ifdef from last push
This commit is contained in:
@ -210,8 +210,12 @@ INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
|||||||
ERROR 22007: Incorrect date value: '2004-10-00 15:30:00' for column 'col1' at row 1
|
ERROR 22007: Incorrect date value: '2004-10-00 15:30:00' for column 'col1' at row 1
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect date value: '2004-09-31 15:30:00' for column 'col1' at row 1
|
ERROR 22007: Incorrect date value: '2004-09-31 15:30:00' for column 'col1' at row 1
|
||||||
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
ERROR HY000: Incorrect datetime value: '32.10.2004 15.30' for function str_to_time
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect date value: '2003-02-29 15:30:00' for column 'col1' at row 1
|
ERROR 22007: Incorrect date value: '2003-02-29 15:30:00' for column 'col1' at row 1
|
||||||
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
ERROR HY000: Incorrect datetime value: '15.13.2004 15.30' for function str_to_time
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
ERROR 22007: Incorrect date value: '0000-00-00' for column 'col1' at row 1
|
ERROR 22007: Incorrect date value: '0000-00-00' for column 'col1' at row 1
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||||
@ -221,8 +225,14 @@ INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
|||||||
ERROR 22007: Incorrect datetime value: '2004-10-00 15:30:00' for column 'col2' at row 1
|
ERROR 22007: Incorrect datetime value: '2004-10-00 15:30:00' for column 'col2' at row 1
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect datetime value: '2004-09-31 15:30:00' for column 'col2' at row 1
|
ERROR 22007: Incorrect datetime value: '2004-09-31 15:30:00' for column 'col2' at row 1
|
||||||
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
ERROR HY000: Incorrect datetime value: '32.10.2004 15.30' for function str_to_time
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect datetime value: '2003-02-29 15:30:00' for column 'col2' at row 1
|
ERROR 22007: Incorrect datetime value: '2003-02-29 15:30:00' for column 'col2' at row 1
|
||||||
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
ERROR HY000: Incorrect datetime value: '15.13.2004 15.30' for function str_to_time
|
||||||
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
|
ERROR 22007: Incorrect datetime value: '0000-00-00' for column 'col2' at row 1
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect datetime value: '0000-10-31 15:30:00' for column 'col3' at row 1
|
ERROR 22007: Incorrect datetime value: '0000-10-31 15:30:00' for column 'col3' at row 1
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
@ -231,8 +241,12 @@ INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
|||||||
ERROR 22007: Incorrect datetime value: '2004-10-00 15:30:00' for column 'col3' at row 1
|
ERROR 22007: Incorrect datetime value: '2004-10-00 15:30:00' for column 'col3' at row 1
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect datetime value: '2004-09-31 15:30:00' for column 'col3' at row 1
|
ERROR 22007: Incorrect datetime value: '2004-09-31 15:30:00' for column 'col3' at row 1
|
||||||
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
ERROR HY000: Incorrect datetime value: '32.10.2004 15.30' for function str_to_time
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect datetime value: '2003-02-29 15:30:00' for column 'col3' at row 1
|
ERROR 22007: Incorrect datetime value: '2003-02-29 15:30:00' for column 'col3' at row 1
|
||||||
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
ERROR HY000: Incorrect datetime value: '15.13.2004 15.30' for function str_to_time
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
ERROR 22007: Incorrect datetime value: '0000-00-00' for column 'col3' at row 1
|
ERROR 22007: Incorrect datetime value: '0000-00-00' for column 'col3' at row 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -198,20 +198,12 @@ INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
|||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
# deactivated because of Bug#5902
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
# Bug#5902: Traditional mode: STR_TO_DATE changes invalid value rather than rejecting
|
|
||||||
#--error 1292
|
|
||||||
#INSERT INTO t1 (col1) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
|
||||||
|
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
# deactivated because of Bug#5902
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
# Bug#5902: Traditional mode: STR_TO_DATE changes invalid value rather than rejecting
|
|
||||||
#--error 1292
|
|
||||||
#INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
|
||||||
|
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
|
|
||||||
@ -227,21 +219,14 @@ INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
|||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
# deactivated because of Bug#5902
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
# Bug#5902: Traditional mode: STR_TO_DATE changes invalid value rather than rejecting
|
|
||||||
#--error 1292
|
|
||||||
#INSERT INTO t1 (col2) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
|
||||||
|
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
# deactivated because of Bug#5902
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
# Bug#5902: Traditional mode: STR_TO_DATE changes invalid value rather than rejecting
|
--error 1292
|
||||||
#--error 1292
|
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
#INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
|
||||||
#--error 1292
|
|
||||||
#INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
|
||||||
|
|
||||||
## Test INSERT with STR_TO_DATE into TIMESTAMP
|
## Test INSERT with STR_TO_DATE into TIMESTAMP
|
||||||
# All test cases expected to fail should return
|
# All test cases expected to fail should return
|
||||||
@ -255,20 +240,12 @@ INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
|||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
# deactivated because of Bug#5902
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
# Bug#5902: Traditional mode: STR_TO_DATE changes invalid value rather than rejecting
|
|
||||||
#--error 1292
|
|
||||||
#INSERT INTO t1 (col3) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
|
|
||||||
|
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
--error 1411
|
||||||
# deactivated because of Bug#5902
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
# Bug#5902: Traditional mode: STR_TO_DATE changes invalid value rather than rejecting
|
|
||||||
#--error 1292
|
|
||||||
#INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
|
|
||||||
|
|
||||||
--error 1292
|
--error 1292
|
||||||
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
|
||||||
|
|
||||||
|
18
sql/field.cc
18
sql/field.cc
@ -4699,15 +4699,19 @@ int Field_datetime::store(const char *from,uint len,CHARSET_INFO *cs)
|
|||||||
TIME time_tmp;
|
TIME time_tmp;
|
||||||
int error;
|
int error;
|
||||||
ulonglong tmp= 0;
|
ulonglong tmp= 0;
|
||||||
|
enum enum_mysql_timestamp_type func_res;
|
||||||
|
|
||||||
if (str_to_datetime(from, len, &time_tmp,
|
func_res= str_to_datetime(from, len, &time_tmp,
|
||||||
(TIME_FUZZY_DATE |
|
(TIME_FUZZY_DATE |
|
||||||
(table->in_use->variables.sql_mode &
|
(table->in_use->variables.sql_mode &
|
||||||
(MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
|
(MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
|
||||||
MODE_INVALID_DATES))),
|
MODE_INVALID_DATES))),
|
||||||
&error) > MYSQL_TIMESTAMP_ERROR)
|
&error);
|
||||||
|
if ((int) func_res > (int) MYSQL_TIMESTAMP_ERROR)
|
||||||
tmp= TIME_to_ulonglong_datetime(&time_tmp);
|
tmp= TIME_to_ulonglong_datetime(&time_tmp);
|
||||||
|
else
|
||||||
|
error= 1; // Fix if invalid zero date
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
|
set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_WARN_DATA_OUT_OF_RANGE,
|
ER_WARN_DATA_OUT_OF_RANGE,
|
||||||
|
@ -234,7 +234,7 @@ struct sql_ex_info
|
|||||||
/* these are codes, not offsets; not more than 256 values (1 byte). */
|
/* these are codes, not offsets; not more than 256 values (1 byte). */
|
||||||
#define Q_FLAGS2_CODE 0
|
#define Q_FLAGS2_CODE 0
|
||||||
#define Q_SQL_MODE_CODE 1
|
#define Q_SQL_MODE_CODE 1
|
||||||
#ifdef TO_BE_DELETED
|
#ifndef TO_BE_DELETED
|
||||||
/*
|
/*
|
||||||
Q_CATALOG_CODE is catalog with end zero stored; it is used only by MySQL
|
Q_CATALOG_CODE is catalog with end zero stored; it is used only by MySQL
|
||||||
5.0.x where 0<=x<=3.
|
5.0.x where 0<=x<=3.
|
||||||
|
Reference in New Issue
Block a user