mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-12514 Split Item_temporal_func::fix_length_and_dec() + MDEV-12515
This patch implements MDEV-12514 according to the task descriptions. It automatically fixes: MDEV-12515 Wrong value when storing DATE_ADD() and ADDTIME() to a numeric field Additionally: a. Moves Item_func::set_attributes_temporal() to Type_str_attributes::fix_attributes_temporal(), which is a more proper place and name for it. b. Continues replacing calls for: set_handler_by_field_type(MYSQL_TYPE_XXX) to corresponding: set_handler(&type_handler_xxx) which is faster. Note, we should eventually get rid of almost all set_handler_by_field_type(). c. Makes type_handler_string, type_handler_time2, type_handler_newdate, type_handler_datetime2 public. (all built-in handlers will become public eventually) d. Removing Item_temporal_func::sql_mode, as it was not used.
This commit is contained in:
@ -3902,5 +3902,36 @@ SELECT 1 MOD COALESCE(a) FROM t1;
|
||||
ERROR HY000: Illegal parameter data types bigint and geometry for operation '%'
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-12514 Split Item_temporal_func::fix_length_and_dec()
|
||||
#
|
||||
SELECT DATE_ADD(POINT(1,1), INTERVAL 10 DAY);
|
||||
ERROR HY000: Illegal parameter data types geometry and interval for operation 'date_add_interval'
|
||||
SELECT DATE_SUB(POINT(1,1), INTERVAL 10 DAY);
|
||||
ERROR HY000: Illegal parameter data types geometry and interval for operation 'date_add_interval'
|
||||
SELECT POINT(1,1) + INTERVAL 10 DAY;
|
||||
ERROR HY000: Illegal parameter data types geometry and interval for operation 'date_add_interval'
|
||||
SELECT POINT(1,1) - INTERVAL 10 DAY;
|
||||
ERROR HY000: Illegal parameter data types geometry and interval for operation 'date_add_interval'
|
||||
SELECT INTERVAL 10 DAY + POINT(1,1);
|
||||
ERROR HY000: Illegal parameter data types geometry and interval for operation 'date_add_interval'
|
||||
SELECT INTERVAL 10 DAY + POINT(1,1);
|
||||
ERROR HY000: Illegal parameter data types geometry and interval for operation 'date_add_interval'
|
||||
SELECT ADDTIME(POINT(1,1), '10:10:10');
|
||||
ERROR HY000: Illegal parameter data types geometry and varchar for operation 'add_time'
|
||||
SELECT ADDTIME('10:10:10', POINT(1,1));
|
||||
ERROR HY000: Illegal parameter data types varchar and geometry for operation 'add_time'
|
||||
SELECT ADDTIME(POINT(1,1), TIME'10:10:10');
|
||||
ERROR HY000: Illegal parameter data types geometry and time for operation 'add_time'
|
||||
SELECT ADDTIME(TIME'10:10:10', POINT(1,1));
|
||||
ERROR HY000: Illegal parameter data types time and geometry for operation 'add_time'
|
||||
SELECT ADDTIME(POINT(1,1), TIMESTAMP'2001-01-01 10:10:10');
|
||||
ERROR HY000: Illegal parameter data types geometry and datetime for operation 'add_time'
|
||||
SELECT ADDTIME(TIMESTAMP'2001-01-01 10:10:10', POINT(1,1));
|
||||
ERROR HY000: Illegal parameter data types datetime and geometry for operation 'add_time'
|
||||
SELECT STR_TO_DATE(POINT(1,1),'%M %d,%Y');
|
||||
ERROR HY000: Illegal parameter data types geometry and varchar for operation 'str_to_date'
|
||||
SELECT STR_TO_DATE('2001-01-01', POINT(1,1));
|
||||
ERROR HY000: Illegal parameter data types varchar and geometry for operation 'str_to_date'
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
Reference in New Issue
Block a user