#8 0x000055f41c4b60b1 in Item_func_round::fix_arg_int (this=0x7fc238013d18, preferred=0x55f41d89dcb0 <type_handler_long>, preferred_attrs=0x55f41daa8200 <Type_handler_date_common::Item_func_round_fix_length_and_dec(Item_func_round*) const::attr>, use_decimal_on_length_increase=false) at /data/src/10.4/sql/item_func.cc:2470
#9 0x000055f41c2edcb8 in Type_handler_date_common::Item_func_round_fix_length_and_dec (this=0x55f41d89dd40 <type_handler_newdate>, item=0x7fc238013d18) at /data/src/10.4/sql/sql_type.cc:5736
#10 0x000055f41c4c8eb0 in Item_func_round::fix_length_and_dec (this=0x7fc238013d18) at /data/src/10.4/sql/item_func.h:1790
#11 0x000055f41c4ad759 in Item_func::fix_fields (this=0x7fc238013d18, thd=0x7fc238000af0, ref=0x7fc238013df0) at /data/src/10.4/sql/item_func.cc:370
#12 0x000055f41bfb585f in Item::fix_fields_if_needed (this=0x7fc238013d18, thd=0x7fc238000af0, ref=0x7fc238013df0) at /data/src/10.4/sql/item.h:960
#13 0x000055f41bfb588d in Item::fix_fields_if_needed_for_scalar (this=0x7fc238013d18, thd=0x7fc238000af0, ref=0x7fc238013df0) at /data/src/10.4/sql/item.h:964
#14 0x000055f41c034287 in setup_fields (thd=0x7fc238000af0, ref_pointer_array=..., fields=..., column_usage=MARK_COLUMNS_READ, sum_func_list=0x7fc238014a80, pre_fix=0x7fc238013520, allow_sum_func=true) at /data/src/10.4/sql/sql_base.cc:7685
#15 0x000055f41c111e26 in JOIN::prepare (this=0x7fc238014760, tables_init=0x0, wild_num=0, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7fc2380133c0, unit_arg=0x7fc238004a18) at /data/src/10.4/sql/sql_select.cc:1245
#16 0x000055f41c11eae5 in mysql_select (thd=0x7fc238000af0, tables=0x0, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fc238014738, unit=0x7fc238004a18, select_lex=0x7fc2380133c0) at /data/src/10.4/sql/sql_select.cc:4650
#17 0x000055f41c10e75c in handle_select (thd=0x7fc238000af0, lex=0x7fc238004958, result=0x7fc238014738, setup_tables_done_option=0) at /data/src/10.4/sql/sql_select.cc:422
#18 0x000055f41c0d4f86 in execute_sqlcom_select (thd=0x7fc238000af0, all_tables=0x0) at /data/src/10.4/sql/sql_parse.cc:6355
#19 0x000055f41c0cb5bd in mysql_execute_command (thd=0x7fc238000af0) at /data/src/10.4/sql/sql_parse.cc:3889
#20 0x000055f41c0d8f33 in mysql_parse (thd=0x7fc238000af0, rawbuf=0x7fc2380132f0 "SELECT ROUND(GREATEST('1', CAST('2020-12-12' AS DATE)))", length=55, parser_state=0x7fc2482a9570, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:7896
#21 0x000055f41c0c5468 in dispatch_command (command=COM_QUERY, thd=0x7fc238000af0, packet=0x7fc2381364b1 "SELECT ROUND(GREATEST('1', CAST('2020-12-12' AS DATE)))", packet_length=55, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1835
#22 0x000055f41c0c3c0a in do_command (thd=0x7fc238000af0) at /data/src/10.4/sql/sql_parse.cc:1353
#23 0x000055f41c24cfa0 in do_handle_one_connection (connect=0x55f4200ffba0) at /data/src/10.4/sql/sql_connect.cc:1412
#24 0x000055f41c24ccef in handle_one_connection (arg=0x55f4200ffba0) at /data/src/10.4/sql/sql_connect.cc:1316
#25 0x000055f41cc4f0d5 in pfs_spawn_thread (arg=0x55f42011b720) at /data/src/10.4/storage/perfschema/pfs.cc:1869
#26 0x00007fc2500884a4 in start_thread (arg=0x7fc2482aa700) at pthread_create.c:456
#27 0x00007fc24e1bcd0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
Reproducible on 10.4-10.5.
Not reproducible on 10.3.
The failure started happening on 10.4 after this commit:
commit dc513dff911d72eaaf9f752f390fef8d1ef9a4b0
Author: Alexander Barkov
Date: Fri Jul 31 10:42:44 2020 +0400
MDEV-23351 Rounding functions return wrong data types for DATE input
Attachments
Issue Links
relates to
MDEV-17351Wrong results for GREATEST,TIMESTAMP,ADDTIME with an out-of-range TIME-alike argument
Closed
MDEV-23351Rounding functions return wrong data types for DATE input
Closed
MDEV-35977Assertion `args[0]->decimals == 0' failed in Item_func_round::fix_arg_hex_hybrid
The problem is that GREATEST() incorrectly calculates its decimals as 6: mysql --column-type-info displays the following output:
SELECT GREATEST('1', CAST('2020-12-12'ASDATE));
Field 1: `GREATEST('1', CAST('2020-12-12' AS DATE))`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: DATE
Collation: binary (63)
Length: 10
Max_length: 10
Decimals: 6
Flags: BINARY
+-------------------------------------------+
| GREATEST('1', CAST('2020-12-12' AS DATE)) |
+-------------------------------------------+
| 2020-12-12 |
+-------------------------------------------+
1 row in set, 1 warning (0.001 sec)
Alexander Barkov
added a comment - The problem is that GREATEST() incorrectly calculates its decimals as 6:
mysql --column-type-info displays the following output:
SELECT GREATEST( '1' , CAST ( '2020-12-12' AS DATE ));
Field 1: `GREATEST('1', CAST('2020-12-12' AS DATE))`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: DATE
Collation: binary (63)
Length: 10
Max_length: 10
Decimals: 6
Flags: BINARY
+-------------------------------------------+
| GREATEST('1', CAST('2020-12-12' AS DATE)) |
+-------------------------------------------+
| 2020-12-12 |
+-------------------------------------------+
1 row in set, 1 warning (0.001 sec)
The problem is that GREATEST() incorrectly calculates its decimals as 6:
mysql --column-type-info displays the following output:
Field 1: `GREATEST('1', CAST('2020-12-12' AS DATE))`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: DATE
Collation: binary (63)
Length: 10
Max_length: 10
Decimals: 6
Flags: BINARY
+-------------------------------------------+
| GREATEST('1', CAST('2020-12-12' AS DATE)) |
+-------------------------------------------+
| 2020-12-12 |
+-------------------------------------------+
1 row in set, 1 warning (0.001 sec)