Details
Description
TO_CHAR function was added in 10.6.1, hence the affected versions. Other functions which I tried don't fail this way.
SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10'))); |
Note: VALUES(1,2) also fails, but I'm using dates in the test case to make it somewhat more sensible, because that's what TO_CHAR normally expects.
10.6 654236c0 |
mariadbd: /data/src/10.6/sql/sql_type.h:4372: virtual enum_field_types Type_handler_row::field_type() const: Assertion `0' failed.
|
220722 16:14:57 [ERROR] mysqld got signal 6 ;
|
 |
#7 0x00007f44fc2f4662 in __GI___assert_fail (assertion=0x5607795ae847 "0", file=0x5607795adcb0 "/data/src/10.6/sql/sql_type.h", line=4372, function=0x5607795aeac8 "virtual enum_field_types Type_handler_row::field_type() const") at assert.c:101
|
No locals.
|
#8 0x0000560778a4b9fa in Type_handler_row::field_type (this=0x56077a118500 <type_handler_row>) at /data/src/10.6/sql/sql_type.h:4372
|
__PRETTY_FUNCTION__ = "virtual enum_field_types Type_handler_row::field_type() const"
|
#9 0x000056077872ed72 in Item::field_type (this=0x7f44dc016ab8) at /data/src/10.6/sql/item.h:1232
|
No locals.
|
#10 0x0000560778c77ba4 in Item_func_tochar::fix_length_and_dec (this=0x7f44dc016dc8) at /data/src/10.6/sql/item_timefunc.cc:2635
|
cs = 0x560779fce600 <my_charset_latin1>
|
arg1 = 0x7f44dc016d18
|
repertoire = MY_REPERTOIRE_ASCII
|
buffer = {<String> = {<Charset> = {m_charset = 0x560779f2b560 <my_charset_bin>}, <Binary_string> = {<Sql_alloc> = {<No data fields>}, Ptr = 0x7f44f2c9111e "", str_length = 0, Alloced_length = 80, extra_alloc = 0, alloced = false, thread_specific = false}, <No data fields>}, buff = "\000\000p\021\311\362D\177\000\000c4\276x\aV\000\000\002\000\000\000\001\000\000\000\310m\001\334D\177\000\000\004\021\311\362\004\177\000\000`\021\311\362\002\000\000\000\312\263sy\aV\000\000\a\000\000\000\000\000\000\000\220\021\311\362D\177\000\000\b\000\000\000\000"}
|
str = 0x7f44dc016d18
|
arg0_mysql_type = 32580
|
#11 0x0000560778be3c31 in Item_func::fix_fields (this=0x7f44dc016dc8, thd=0x7f44dc000db8, ref=0x7f44dc016fd0) at /data/src/10.6/sql/item_func.cc:359
|
__PRETTY_FUNCTION__ = "virtual bool Item_func::fix_fields(THD*, Item**)"
|
arg = 0x7f44dc016e50
|
arg_end = 0x7f44dc016e50
|
buff = " \024\311\362D\177\000\000\260\024\311\362D\177\000\000\b\000\000\000\aV\000\000\340\f\000\334D\177\000\000\b\000\000\000D\177\000\000\340\f\000\334D\177\000\000@\022\311\362D\177\000\000)\000Dy\aV\000\000@\022\311\362D\177\000\000\340\f\000\334D\177\000\000\340\f\000\334D\177\000\000\270\f\000\334\000\000\000\000\034Y\227y\aV\000\000\000\000\000\000\000\000\000\000p\022\311\362D\177\000\000|\001Ay\aV\000\000\200\022\311\362D\177\000\000|\001Ay\aV\000\000\220\022\311\362D\177\000\000\250\002Ay\aV\000\000\240\022\311\362D\177\000\000`\v\000\334D\177\000\000\260\022\311\362D\177\000\000\067\314Cy\aV\000\000\340\f\000\334D\177\000\000"...
|
#12 0x0000560778c236a3 in Item_str_func::fix_fields (this=0x7f44dc016dc8, thd=0x7f44dc000db8, ref=0x7f44dc016fd0) at /data/src/10.6/sql/item_strfunc.cc:122
|
res = false
|
#13 0x00005607786a62dc in Item::fix_fields_if_needed (this=0x7f44dc016dc8, thd=0x7f44dc000db8, ref=0x7f44dc016fd0) at /data/src/10.6/sql/item.h:1144
|
No locals.
|
#14 0x00005607786a6311 in Item::fix_fields_if_needed_for_scalar (this=0x7f44dc016dc8, thd=0x7f44dc000db8, ref=0x7f44dc016fd0) at /data/src/10.6/sql/item.h:1148
|
No locals.
|
#15 0x0000560778728c80 in setup_fields (thd=0x7f44dc000db8, ref_pointer_array={m_array = 0x7f44dc017ec0, m_size = 4}, fields=@0x7f44dc015a88: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7f44dc016fc8, last = 0x7f44dc016fc8, elements = 1}, <No data fields>}, column_usage=MARK_COLUMNS_READ, sum_func_list=0x7f44dc017c70, pre_fix=0x7f44dc015aa0, allow_sum_func=true) at /data/src/10.6/sql/sql_base.cc:7709
|
item = 0x7f44dc016dc8
|
saved_column_usage = MARK_COLUMNS_READ
|
save_allow_sum_func = {buffer = {0}}
|
it = {<base_list_iterator> = {list = 0x7f44dc015a88, el = 0x7f44dc016fc8, prev = 0x7f44dc015a88, current = 0x7f44dc016fc8}, <No data fields>}
|
save_is_item_list_lookup = true
|
make_pre_fix = true
|
_db_stack_frame_ = {func = 0x56077953aee7 "JOIN::prepare", file = 0x56077953aa10 "/data/src/10.6/sql/sql_select.cc", level = 2147483656, line = -1, prev = 0x7f44f2c915a0}
|
__PRETTY_FUNCTION__ = "bool setup_fields(THD*, Ref_ptr_array, List<Item>&, enum_column_usage, List<Item>*, List<Item>*, bool)"
|
li = {<base_list_iterator> = {list = 0x7f44dc006080, el = 0x56077a0ed100 <end_of_list>, prev = 0x7f44dc006080, current = 0x56077a0ed100 <end_of_list>}, <No data fields>}
|
var = 0x0
|
ref = {m_array = 0x7f44dc017ec0, m_size = 4}
|
#16 0x000056077881511a in JOIN::prepare (this=0x7f44dc017918, tables_init=0x0, 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=0x7f44dc0157e8, unit_arg=0x7f44dc005120) at /data/src/10.6/sql/sql_select.cc:1408
|
_db_stack_frame_ = {func = 0x56077953bb67 "mysql_select", file = 0x56077953aa10 "/data/src/10.6/sql/sql_select.cc", level = 2147483655, line = -1, prev = 0x7f44f2c91720}
|
trace_wrapper = {<Json_writer_struct> = {_vptr.Json_writer_struct = 0x560779d8e328 <vtable for Json_writer_object+16>, my_writer = 0x0, context = {writer = 0x0}, closed = false}, <No data fields>}
|
trace_prepare = {<Json_writer_struct> = {_vptr.Json_writer_struct = 0x560779d8e328 <vtable for Json_writer_object+16>, my_writer = 0x0, context = {writer = 0x0}, closed = false}, <No data fields>}
|
trace_steps = {<Json_writer_struct> = {_vptr.Json_writer_struct = 0x560779d8e308 <vtable for Json_writer_array+16>, my_writer = 0x0, context = {writer = 0x0}, closed = false}, <No data fields>}
|
tbl = 0x0
|
li = {<base_list_iterator> = {list = 0x7f44dc015a00, el = 0x56077a0ed100 <end_of_list>, prev = 0x0, current = 0x0}, <No data fields>}
|
real_og_num = 0
|
__PRETTY_FUNCTION__ = "int JOIN::prepare(TABLE_LIST*, COND*, uint, ORDER*, bool, ORDER*, Item*, ORDER*, SELECT_LEX*, SELECT_LEX_UNIT*)"
|
save_place = NO_MATTER
|
with_clause = 0x7f44dc017918
|
with_elem = 0x7f44f2c915c0
|
res = -221702288
|
#17 0x0000560778822512 in mysql_select (thd=0x7f44dc000db8, tables=0x0, fields=@0x7f44dc015a88: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7f44dc016fc8, last = 0x7f44dc016fc8, elements = 1}, <No data fields>}, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7f44dc0178f0, unit=0x7f44dc005120, select_lex=0x7f44dc0157e8) at /data/src/10.6/sql/sql_select.cc:4997
|
err = 0
|
free_join = true
|
_db_stack_frame_ = {func = 0x56077953aaf8 "handle_select", file = 0x56077953aa10 "/data/src/10.6/sql/sql_select.cc", level = 2147483654, line = -1, prev = 0x7f44f2c917e0}
|
join = 0x7f44dc017918
|
#18 0x0000560778811923 in handle_select (thd=0x7f44dc000db8, lex=0x7f44dc005058, result=0x7f44dc0178f0, setup_tables_done_option=0) at /data/src/10.6/sql/sql_select.cc:554
|
unit = 0x7f44dc005120
|
res = false
|
select_lex = 0x7f44dc0157e8
|
_db_stack_frame_ = {func = 0x56077952bcd0 "mysql_execute_command", file = 0x56077952afa8 "/data/src/10.6/sql/sql_parse.cc", level = 2147483653, line = -1, prev = 0x7f44f2c91e30}
|
#19 0x00005607787d2e46 in execute_sqlcom_select (thd=0x7f44dc000db8, all_tables=0x0) at /data/src/10.6/sql/sql_parse.cc:6255
|
save_protocol = 0x0
|
lex = 0x7f44dc005058
|
result = 0x7f44dc0178f0
|
res = false
|
__PRETTY_FUNCTION__ = "bool execute_sqlcom_select(THD*, TABLE_LIST*)"
|
#20 0x00005607787ca146 in mysql_execute_command (thd=0x7f44dc000db8, is_called_from_prepared_stmt=false) at /data/src/10.6/sql/sql_parse.cc:3945
|
privileges_requested = SELECT_ACL
|
res = 0
|
up_result = 0
|
lex = 0x7f44dc005058
|
select_lex = 0x7f44dc0157e8
|
first_table = 0x0
|
all_tables = 0x0
|
unit = 0x7f44dc005120
|
have_table_map_for_update = false
|
rpl_filter = 0x7f44f2c91dd0
|
_db_stack_frame_ = {func = 0x56077952d037 "mysql_parse", file = 0x56077952afa8 "/data/src/10.6/sql/sql_parse.cc", level = 2147483652, line = -1, prev = 0x7f44f2c92240}
|
__PRETTY_FUNCTION__ = "int mysql_execute_command(THD*, bool)"
|
ots = {ctx = 0x7f44dc004d20, traceable = false}
|
orig_binlog_format = BINLOG_FORMAT_MIXED
|
orig_current_stmt_binlog_format = BINLOG_FORMAT_STMT
|
#21 0x00005607787d7bb8 in mysql_parse (thd=0x7f44dc000db8, rawbuf=0x7f44dc015720 "SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10')))", length=51, parser_state=0x7f44f2c923c0) at /data/src/10.6/sql/sql_parse.cc:8029
|
found_semicolon = 0x0
|
error = 32580
|
lex = 0x7f44dc005058
|
err = false
|
_db_stack_frame_ = {func = 0x56077952b521 "dispatch_command", file = 0x56077952afa8 "/data/src/10.6/sql/sql_parse.cc", level = 2147483651, line = -1, prev = 0x7f44f2c923a0}
|
__PRETTY_FUNCTION__ = "void mysql_parse(THD*, char*, uint, Parser_state*)"
|
#22 0x00005607787c421b in dispatch_command (command=COM_QUERY, thd=0x7f44dc000db8, packet=0x7f44dc00b879 "SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10')))", packet_length=51, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1896
|
packet_end = 0x7f44dc015753 ""
|
parser_state = {m_lip = {lookahead_token = -1, lookahead_yylval = 0x0, m_thd = 0x7f44dc000db8, m_ptr = 0x7f44dc015754 "\004", m_tok_start = 0x7f44dc015754 "\004", m_tok_end = 0x7f44dc015754 "\004", m_end_of_query = 0x7f44dc015753 "", m_tok_start_prev = 0x7f44dc015753 "", m_buf = 0x7f44dc015720 "SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10')))", m_buf_length = 51, m_echo = true, m_echo_saved = false, m_cpp_buf = 0x7f44dc0157b0 "SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10')))", m_cpp_ptr = 0x7f44dc0157e3 "", m_cpp_tok_start = 0x7f44dc0157e3 "", m_cpp_tok_start_prev = 0x7f44dc0157e3 "", m_cpp_tok_end = 0x7f44dc0157e3 "", m_body_utf8 = 0x0, m_body_utf8_ptr = 0x1dc000cb8 <error: Cannot access memory at address 0x1dc000cb8>, m_cpp_utf8_processed_ptr = 0x0, next_state = MY_LEX_END, found_semicolon = 0x0, ignore_space = false, stmt_prepare_mode = false, multi_statements = true, yylineno = 1, m_digest = 0x0, in_comment = NO_COMMENT, in_comment_saved = (unknown: 0x10000), m_cpp_text_start = 0x7f44dc0157d5 "2020-10-10')))", m_cpp_text_end = 0x7f44dc0157df "')))", m_underscore_cs = 0x0}, m_yacc = {yacc_yyss = 0x0, yacc_yyvs = 0x0, m_set_signal_info = {m_item = {0x0 <repeats 12 times>}}, m_lock_type = TL_READ_DEFAULT, m_mdl_type = MDL_SHARED_READ}, m_digest_psi = 0x7f44dc004ab0}
|
net = 0x7f44dc0010f0
|
error = false
|
do_end_of_statement = true
|
_db_stack_frame_ = {func = 0x56077952b1a5 "do_command", file = 0x56077952afa8 "/data/src/10.6/sql/sql_parse.cc", level = 2147483650, line = -1, prev = 0x7f44f2c92c80}
|
drop_more_results = false
|
__PRETTY_FUNCTION__ = "dispatch_command_return dispatch_command(enum_server_command, THD*, char*, uint, bool)"
|
__FUNCTION__ = "dispatch_command"
|
res = <optimized out>
|
#23 0x00005607787c2c16 in do_command (thd=0x7f44dc000db8, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1409
|
return_value = (DISPATCH_COMMAND_CLOSE_CONNECTION | unknown: 0x80000000)
|
packet = 0x7f44dc00b878 "\003SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10')))"
|
packet_length = 52
|
net = 0x7f44dc0010f0
|
command = COM_QUERY
|
_db_stack_frame_ = {func = 0x56077997de60 "?func", file = 0x56077997de66 "?file", level = 2147483649, line = -1, prev = 0x0}
|
__PRETTY_FUNCTION__ = "dispatch_command_return do_command(THD*, bool)"
|
__FUNCTION__ = "do_command"
|
#24 0x000056077897cd20 in do_handle_one_connection (connect=0x56077c6f4ea8, put_in_cache=true) at /data/src/10.6/sql/sql_connect.cc:1418
|
create_user = true
|
thr_create_utime = 4917809604030
|
thd = 0x7f44dc000db8
|
__PRETTY_FUNCTION__ = "void do_handle_one_connection(CONNECT*, bool)"
|
#25 0x000056077897c9bf in handle_one_connection (arg=0x56077c6f4af8) at /data/src/10.6/sql/sql_connect.cc:1312
|
connect = 0x56077c6f4af8
|
#26 0x0000560778e986fe in pfs_spawn_thread (arg=0x56077c6cdc28) at /data/src/10.6/storage/perfschema/pfs.cc:2201
|
typed_arg = 0x56077c6cdc28
|
user_arg = 0x56077c6f4af8
|
user_start_routine = 0x56077897c964 <handle_one_connection(void*)>
|
pfs = 0x7f44fbbe85c0
|
klass = 0x56077c105900
|
#27 0x00007f44fc7c0ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
ret = <optimized out>
|
pd = <optimized out>
|
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139934107776768, 1659557081960745161, 140733638725310, 140733638725311, 139934107774528, 311296, -1617342237698357047, -1617330307275749175}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
|
not_first_call = 0
|
#28 0x00007f44fc3bddef in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
It's a debug assertion so non-debug builds don't crash, but the error they produce is also questionable:
query 'SELECT TO_CHAR((VALUES('2022-12-12','2020-10-10')))' failed: ER_STD_INVALID_ARGUMENT (3047): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char. |
Normally we would probably expect 1241 ER_OPERAND_COLUMNS (Operand should contain 1 column(s)).