Bug #112461 Assertion `!thd->lex->is_exec_started()' failed in /mysql-8.0.34/sql/item_func.c
Submitted: 26 Sep 2023 8:53 Modified: 26 Sep 2023 9:06
Reporter: xin wen Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: DDL Severity:S6 (Debug Builds)
Version:8.0.34 OS:Ubuntu (20.04)
Assigned to: CPU Architecture:Any

[26 Sep 2023 8:53] xin wen
Description:
Run these queries:

CREATE TABLE t0 ( c30 INT , c0 INT , INDEX i0 ( ( c0 + COS ( -99 ) * SQRT ( -106 ) * REPLACE ( 28 , 'LYEEigZOI#kFNnv\'+n58}Nbh' , 'g\\f{<J4I"36+oqwMp!RNY[P6!];g_"\' H4;x5eB%Io^7@Ew9\'tI' ) ) ) , INDEX i1 ( ( 115 LIKE MAKE_SET ( 22 , 'V+4gh @.&zZZs-/o{c"!l-[Vlx}<VLyv(nWHk#4{44w&#Uk ](Pt:z' , 'b2(OR0-N\'dOgH C4;~7u7VH[&=_C?A!XqfR=cI[nuw6\\0Qi$LO\\/WF`#Dpy"' ) ) ASC ) ) REPLACE AS SELECT 83 AS c2 ;

Will trigger assertion failure:
/home/wx/mysql-8.0.34/sql/item_func.cc:191: bool simplify_string_args(THD*, const DTCollation&, Item**, uint): Assertion `!thd->lex->is_exec_started()' failed.

GDB info:
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff6af2859 in __GI_abort () at abort.c:79
#2  0x00007ffff6af2729 in __assert_fail_base (fmt=0x7ffff6c88588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",  assertion=0x55555dfb1f60 "!thd->lex->is_exec_started()", file=0x55555dfaa580 "/home/wx/mysql-8.0.34/sql/item_func.cc",  line=191, function=<optimized out>) at assert.c:92
#3  0x00007ffff6b03fd6 in __GI___assert_fail (assertion=assertion@entry=0x55555dfb1f60 "!thd->lex->is_exec_started()",  file=file@entry=0x55555dfaa580 "/home/wx/mysql-8.0.34/sql/item_func.cc", line=line@entry=191,  function=function@entry=0x55555dfb1ee0 "bool simplify_string_args(THD*, const DTCollation&, Item**, uint)") at assert.c:101
#4  0x0000555559d66665 in simplify_string_args (thd=thd@entry=0x6270002bf900, c=..., args=0x6070003ec938, nargs=nargs@entry=1) at /home/wx/mysql-8.0.34/sql/item_func.cc:197
#5  0x0000555559de8b42 in Item_func_replace::resolve_type (this=0x613000c8a830, thd=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/item_strfunc.cc:1298
#6  0x0000555559d51c80 in Item_func::fix_fields (this=this@entry=0x613000c8a830, thd=thd@entry=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/item_func.cc:422
#7  0x0000555559decf46 in Item_str_func::fix_fields (this=0x613000c8a830, thd=0x6270002bf900, ref=<optimized out>) at /home/wx/mysql-8.0.34/sql/item_strfunc.cc:164
#8  0x0000555559d5166d in Item_func::fix_func_arg (this=this@entry=0x6120002d79f0, thd=thd@entry=0x6270002bf900,  arg=arg@entry=0x6120002d7aa0) at /home/wx/mysql-8.0.34/sql/item_func.cc:429
#9  0x0000555559d51c48 in Item_func::fix_fields (this=0x6120002d79f0, thd=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/item_func.cc:418
#10 0x0000555559d5166d in Item_func::fix_func_arg (this=this@entry=0x6120002d7b70, thd=thd@entry=0x6270002bf900,  arg=arg@entry=0x6120002d7c20) at /home/wx/mysql-8.0.34/sql/item_func.cc:429
#11 0x0000555559d51c48 in Item_func::fix_fields (this=0x6120002d7b70, thd=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/item_func.cc:418
#12 0x0000555559fe9e2e in Key_part_spec::resolve_expression (this=this@entry=0x608003352550, thd=thd@entry=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/key_spec.cc:97
#13 0x000055555967fd0b in add_functional_index_to_create_list (thd=thd@entry=0x6270002bf900,  key_spec=key_spec@entry=0x6110000e9130, alter_info=alter_info@entry=0x7fffc706bf50, kp=kp@entry=0x608003352550,  key_part_number=key_part_number@entry=0, create_info=create_info@entry=0x7fffc706bdd0) at /home/wx/mysql-8.0.34/sql/sql_table.cc:7819
#14 0x0000555559685cb5 in mysql_prepare_create_table (thd=thd@entry=0x6270002bf900,  error_schema_name=error_schema_name@entry=0x606000c7c670 "test", error_table_name=error_table_name@entry=0x606000c7ba70 "t0", reate_info=create_info@entry=0x7fffc706bdd0, alter_info=alter_info@entry=0x7fffc706bf50, file=<optimized out>, is_partitioned=<optimized out>, key_info_buffer=<optimized out>, key_count=<optimized out>, fk_key_info_buffer=<optimized out>, fk_key_count=<optimized out>, existing_fks=<optimized out>, existing_fks_count=<optimized out>, existing_fks_table=<optimized out>, fk_max_generated_name_number=0, select_field_count=<optimized out>, find_parent_keys=<optimized out>) at /home/wx/mysql-8.0.34/sql/sql_table.cc:8052
#15 0x0000555559689828 in create_table_impl (thd=thd@entry=0x6270002bf900, schema=..., db=db@entry=0x606000c7c670 "test", table_name=table_name@entry=0x606000c7ba70 "t0", error_table_name=error_table_name@entry=0x606000c7ba70 "t0", path=path@entry=0x7fffc706a600 "./test/t0", create_info=<optimized out>, alter_info=<optimized out>, internal_tmp_table=<optimized out>, select_field_count=<optimized out>, find_parent_keys=<optimized out>, no_ha_table=<optimized out>, do_not_store_in_dd=<optimized out>, is_trans=<optimized out>, key_info=<optimized out>, key_count=<optimized out>, keys_onoff=<optimized out>, fk_key_info=<optimized out>, fk_key_count=<optimized out>, existing_fk_info=<optimized out>, existing_fk_count=<optimized out>, existing_fk_table=<optimized out>, fk_max_generated_name_number=<optimized out>, table_def=<optimized out>, post_ddl_ht=<optimized out>) at /home/wx/mysql-8.0.34/sql/sql_table.cc:8901
#16 0x000055555968b5cf in mysql_create_table_no_lock (thd=thd@entry=0x6270002bf900, db=<optimized out>, table_name=<optimized out>, create_info=create_info@entry=0x7fffc706bdd0, alter_info=alter_info@entry=0x7fffc706bf50, select_field_count=<optimized out>, find_parent_keys=<optimized out>, is_trans=<optimized out>, post_ddl_ht=<optimized out>) at /home/wx/mysql-8.0.34/sql/sql_table.cc:9216
#17 0x000055555a1e07d6 in create_table_from_items (thd=thd@entry=0x6270002bf900, create_info=<optimized out>, create_table=<optimized out>, alter_info=0x7fffc706bf50, items=..., post_ddl_ht=post_ddl_ht@entry=0x6140001571f0) at /home/wx/mysql-8.0.34/sql/sql_insert.cc:2761
#18 0x000055555a1e0ddb in Query_result_create::create_table_for_query_block (this=0x614000157070, thd=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/sql_insert.cc:2837
#19 0x000055555a1a71b8 in populate_table (thd=thd@entry=0x6270002bf900, lex=lex@entry=0x61d00066f880) at /home/wx/mysql-8.0.34/sql/sql_cmd_ddl_table.cc:110
#20 0x000055555a1a950f in Sql_cmd_create_table::execute (this=<optimized out>, thd=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/sql_cmd_ddl_table.cc:404
#21 0x00005555594b8caf in mysql_execute_command (thd=thd@entry=0x6270002bf900, first_level=first_level@entry=true) at /home/wx/mysql-8.0.34/sql/sql_parse.cc:3688
#22 0x00005555594c0bfe in dispatch_sql_command (thd=0x6270002bf900, parser_state=parser_state@entry=0x7fffc706ec00) at /home/wx/mysql-8.0.34/sql/sql_parse.cc:5368
#23 0x00005555594c38e2 in dispatch_command (thd=thd@entry=0x6270002bf900, com_data=com_data@entry=0x7fffc7070200, command=<optimized out>) at /home/wx/mysql-8.0.34/sql/sql_parse.cc:2054
#24 0x00005555594c7392 in do_command (thd=thd@entry=0x6270002bf900) at /home/wx/mysql-8.0.34/sql/sql_parse.cc:1439

Observed that only debug build is affected.

How to repeat:
Run the queries above.
[26 Sep 2023 9:06] MySQL Verification Team
Hello xin wen,

Thank you for the report and test case.
Observed that 8.0.34 debug build is affected.

regards,
Umesh
[26 Sep 2023 9:07] MySQL Verification Team
--
./mtr --nocheck-testcases bug112461
Logging: ./mtr  --nocheck-testcases bug112461
MySQL Version 8.0.34
Checking supported features
Using 'all' suites
Collecting tests
Checking leftover processes
Removing old var directory
Creating var directory '/export/home/tmp/ushastry/mysql-8.0.34/mysql-test/var'
Installing system database
Using parallel: 1

==============================================================================
                  TEST NAME                       RESULT  TIME (ms) COMMENT
------------------------------------------------------------------------------
CREATE TABLE t0 ( c30 INT , c0 INT , INDEX i0 ( ( c0 + COS ( -99 ) * SQRT ( -106 ) * REPLACE ( 28 , 'LYEEigZOI#kFNnv\'+n58}Nbh' , 'g\\f{<J4I"36+oqwMp!RNY[P6!];g_"\' H4;x5eB%Io^7@Ew9\'tI' ) ) ) , INDEX i1 ( ( 115 LIKE MAKE_SET ( 22 , 'V+4gh @.&zZZs-/o{c"!l-[Vlx}<VLyv(nWHk#4{44w&#Uk ](Pt:z' , 'b2(OR0-N\'dOgH C4;~7u7VH[&=_C?A!XqfR=cI[nuw6\\0Qi$LO\\/WF`#Dpy"' ) ) ASC ) ) REPLACE AS SELECT 83 AS c2 ;
[ 50%] main.bug112461                            [ pass ]     92
[100%] shutdown_report                           [ pass ]
------------------------------------------------------------------------------

--debug build

 ./mtr --nocheck-testcases bug112461 --debug-server
Logging: ./mtr  --nocheck-testcases bug112461 --debug-server
MySQL Version 8.0.34
Checking supported features
 - Binaries are debug compiled
Using 'all' suites
Collecting tests
Checking leftover processes
Removing old var directory
Creating var directory '/export/home/tmp/ushastry/mysql-8.0.34/mysql-test/var'
Installing system database
Using parallel: 1

==============================================================================
                  TEST NAME                       RESULT  TIME (ms) COMMENT
------------------------------------------------------------------------------
CREATE TABLE t0 ( c30 INT , c0 INT , INDEX i0 ( ( c0 + COS ( -99 ) * SQRT ( -106 ) * REPLACE ( 28 , 'LYEEigZOI#kFNnv\'+n58}Nbh' , 'g\\f{<J4I"36+oqwMp!RNY[P6!];g_"\' H4;x5eB%Io^7@Ew9\'tI' ) ) ) , INDEX i1 ( ( 115 LIKE MAKE_SET ( 22 , 'V+4gh @.&zZZs-/o{c"!l-[Vlx}<VLyv(nWHk#4{44w&#Uk ](Pt:z' , 'b2(OR0-N\'dOgH C4;~7u7VH[&=_C?A!XqfR=cI[nuw6\\0Qi$LO\\/WF`#Dpy"' ) ) ASC ) ) REPLACE AS SELECT 83 AS c2 ;
[ 50%] main.bug112461                            [ fail ]
        Test ended at 2023-09-26 11:06:36

CURRENT_TEST: main.bug112461
mysqltest: At line 1: Query 'CREATE TABLE t0 ( c30 INT , c0 INT , INDEX i0 ( ( c0 + COS ( -99 ) * SQRT ( -106 ) * REPLACE ( 28 , 'LYEEigZOI#kFNnv\'+n58}Nbh' , 'g\\f{<J4I"36+oqwMp!RNY[P6!];g_"\' H4;x5eB%Io^7@Ew9\'tI' ) ) ) , INDEX i1 ( ( 115 LIKE MAKE_SET ( 22 , 'V+4gh @.&zZZs-/o{c"!l-[Vlx}<VLyv(nWHk#4{44w&#Uk ](Pt:z' , 'b2(OR0-N\'dOgH C4;~7u7VH[&=_C?A!XqfR=cI[nuw6\\0Qi$LO\\/WF`#Dpy"' ) ) ASC ) ) REPLACE AS SELECT 83 AS c2 ' failed.
ERROR 2013 (HY000): Lost connection to MySQL server during query