[MDEV-32700] Assertion Failed at /mariadb-11.3.0/sql/item.cc:10737 Created: 2023-11-07  Updated: 2024-01-30  Resolved: 2024-01-22

Status: Closed
Project: MariaDB Server
Component/s: Server
Affects Version/s: 11.1, 11.2, 11.3.0
Fix Version/s: 11.1.4

Type: Bug Priority: Major
Reporter: Xin Wen Assignee: Sergei Petrunia
Resolution: Duplicate Votes: 0
Labels: None
Environment:

Ubuntu 20.04


Issue Links:
Duplicate
is duplicated by MDEV-32699 Assertion Failed at /mariadb-11.3.0/s... Closed
Relates
relates to MDEV-32701 Assertion Failed at /mariadb-11.3.0/s... Closed

 Description   

Run these queries in debug build:

CREATE TABLE x ( x INT ) ;
INSERT INTO x ( x ) VALUES ( 1 ) ;
UPDATE x SET x = ( SELECT x , x FROM x EXCEPT SELECT x , 1 ^ CASE WHEN 1 = 1 THEN FALSE / 1 WHEN 1 = 1 THEN 1 ELSE 1 / 1 END + 1 ^ 1 FROM x WHERE x < 1 ORDER BY 1 ) NOT IN ( SELECT x , x ) WHERE x = 1 ;

Will trigger Assertion Failed.
GDB info:
#0 0x00007ffff6c0c00b in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff6beb859 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff6beb729 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff6bfcfd6 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x0000555557bc9551 in Item_type_holder::val_int (this=0x629000163f68) at /home/wx/mariadb-11.3.0/sql/item.cc:10737
#5 0x0000555556e14b78 in Item::val_int_result (this=0x629000163f68) at /home/wx/mariadb-11.3.0/sql/item.h:1793
#6 0x0000555557bc30d8 in Item_cache_int::cache_value (this=0x629000164c68) at /home/wx/mariadb-11.3.0/sql/item.cc:10161
#7 0x00005555578eb11e in Item_cache::has_value (this=0x629000164c68) at /home/wx/mariadb-11.3.0/sql/item.h:7171
#8 0x00005555578eb320 in Item_cache::is_null (this=0x629000164c68) at /home/wx/mariadb-11.3.0/sql/item.h:7180
#9 0x0000555557de425f in Item_in_subselect::disable_cond_guard_for_const_null_left_expr (this=0x6290001600a8, i=0) at /home/wx/mariadb-11.3.0/sql/item_subselect.h:669
#10 0x0000555557dbd8a7 in Item_in_subselect::create_row_in_to_exists_cond (this=0x6290001600a8, join=0x629000164e08, where_item=0x629000165398, having_item=0x6290001653a0) at /home/wx/mariadb-11.3.0/sql/item_subselect.cc:2651
#11 0x0000555557dc070b in Item_in_subselect::create_in_to_exists_cond (this=0x6290001600a8, join_arg=0x629000164e08) at /home/wx/mariadb-11.3.0/sql/item_subselect.cc:2813
#12 0x00005555577bf65f in JOIN::choose_tableless_subquery_plan (this=0x629000164e08) at /home/wx/mariadb-11.3.0/sql/opt_subselect.cc:7043
#13 0x00005555572cab73 in JOIN::optimize_stage2 (this=0x629000164e08) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:3416
#14 0x00005555572c2f34 in JOIN::optimize_inner (this=0x629000164e08) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:2650
#15 0x00005555572bbba6 in JOIN::optimize (this=0x629000164e08) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:1944
#16 0x0000555557143851 in st_select_lex::optimize_unflattened_subqueries (this=0x62c0001e4f10, const_only=false) at /home/wx/mariadb-11.3.0/sql/sql_lex.cc:4916
#17 0x00005555577b7509 in JOIN::optimize_unflattened_subqueries (this=0x6290001609c0) at /home/wx/mariadb-11.3.0/sql/opt_subselect.cc:5864
#18 0x00005555572c91e7 in JOIN::optimize_stage2 (this=0x6290001609c0) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:3229
#19 0x00005555572c2f34 in JOIN::optimize_inner (this=0x6290001609c0) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:2650
#20 0x00005555572bbba6 in JOIN::optimize (this=0x6290001609c0) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:1944
#21 0x00005555573a8253 in Sql_cmd_dml::execute_inner (this=0x629000160420, thd=0x62c0001e0288) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:33401
#22 0x0000555557569d49 in Sql_cmd_update::execute_inner (this=0x629000160420, thd=0x62c0001e0288) at /home/wx/mariadb-11.3.0/sql/sql_update.cc:3069
#23 0x00005555573a7f0d in Sql_cmd_dml::execute (this=0x629000160420, thd=0x62c0001e0288) at /home/wx/mariadb-11.3.0/sql/sql_select.cc:33350
#24 0x00005555571c1637 in mysql_execute_command (thd=0x62c0001e0288, is_called_from_prepared_stmt=false) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:4361
#25 0x00005555571d95e2 in mysql_parse (thd=0x62c0001e0288, rawbuf=0x6290000f52a8 "UPDATE x SET x = ( SELECT x , x FROM x EXCEPT SELECT x , 1 ^ CASE WHEN 1 = 1 THEN FALSE / 1 WHEN 1 = 1 THEN 1 ELSE 1 / 1 END + 1 ^ 1 FROM x WHERE x < 1 ORDER BY 1 ) NOT IN ( SELECT x , x ) WHERE x = 1", length=200, parser_state=0x7fffd192e870) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:7734
#26 0x00005555571b1237 in dispatch_command (command=COM_QUERY, thd=0x62c0001e0288, packet=0x6290000fa289 " UPDATE x SET x = ( SELECT x , x FROM x EXCEPT SELECT x , 1 ^ CASE WHEN 1 = 1 THEN FALSE / 1 WHEN 1 = 1 THEN 1 ELSE 1 / 1 END + 1 ^ 1 FROM x WHERE x < 1 ORDER BY 1 ) NOT IN ( SELECT x , x ) WHERE x = "..., packet_length=204, blocking=true) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:1893
#27 0x00005555571adf7c in do_command (thd=0x62c0001e0288, blocking=true) at /home/wx/mariadb-11.3.0/sql/sql_parse.cc:1406
#28 0x000055555768e557 in do_handle_one_connection (connect=0x611000076e08, put_in_cache=true) at /home/wx/mariadb-11.3.0/sql/sql_connect.cc:1445
#29 0x000055555768deb4 in handle_one_connection (arg=0x611000076cc8) at /home/wx/mariadb-11.3.0/sql/sql_connect.cc:1347
#30 0x00005555582fa350 in pfs_spawn_thread (arg=0x618000005508) at /home/wx/mariadb-11.3.0/storage/perfschema/pfs.cc:2201
#31 0x00007ffff7115609 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#32 0x00007ffff6ce8133 in clone () from /lib/x86_64-linux-gnu/libc.so.6



 Comments   
Comment by Alice Sherepa [ 2023-11-08 ]

Thanks!
Repeatable on 11.1-11.3

Version: '11.1.3-MariaDB-debug-log'  
mariadbd: 11.1/sql/item.cc:10749: virtual longlong Item_type_holder::val_int(): Assertion `0' failed.
231108 11:30:32 [ERROR] mysqld got signal 6 ;
 
Server version: 11.1.3-MariaDB-debug-log source revision: 5d3e14d780a227d87ea2831481958ac4d5bbd905
 
/lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7f2576567fd6]
sql/item.cc:10750(Item_type_holder::val_int())[0x561b24f1062a]
sql/item.h:1796(Item::val_int_result())[0x561b2494f6c3]
sql/item.cc:10173(Item_cache_int::cache_value())[0x561b24f0e003]
sql/item.h:7117(Item_cache::has_value())[0x561b24dc46d8]
sql/item.h:7126(Item_cache::is_null())[0x561b24dc47a0]
sql/item_subselect.h:669(Item_in_subselect::disable_cond_guard_for_const_null_left_expr(int))[0x561b24ff1d75]
sql/item_subselect.cc:2653(Item_in_subselect::create_row_in_to_exists_cond(JOIN*, Item**, Item**))[0x561b24fe35ca]
sql/item_subselect.cc:2813(Item_in_subselect::create_in_to_exists_cond(JOIN*))[0x561b24fe4920]
sql/opt_subselect.cc:7044(JOIN::choose_tableless_subquery_plan())[0x561b24d48fee]
sql/sql_select.cc:3417(JOIN::optimize_stage2())[0x561b24b4d053]
sql/sql_select.cc:2646(JOIN::optimize_inner())[0x561b24b4a5ea]
sql/sql_select.cc:1944(JOIN::optimize())[0x561b24b47cd6]
sql/sql_lex.cc:4847(st_select_lex::optimize_unflattened_subqueries(bool))[0x561b24aa9e95]
sql/opt_subselect.cc:5866(JOIN::optimize_unflattened_subqueries())[0x561b24d45ef6]
sql/sql_select.cc:3227(JOIN::optimize_stage2())[0x561b24b4c815]
sql/sql_select.cc:2646(JOIN::optimize_inner())[0x561b24b4a5ea]
sql/sql_select.cc:1944(JOIN::optimize())[0x561b24b47cd6]
sql/sql_select.cc:33490(Sql_cmd_dml::execute_inner(THD*))[0x561b24ba2137]
sql/sql_update.cc:3076(Sql_cmd_update::execute_inner(THD*))[0x561b24c4b7e7]
sql/sql_select.cc:33439(Sql_cmd_dml::execute(THD*))[0x561b24ba1f45]
sql/sql_parse.cc:4405(mysql_execute_command(THD*, bool))[0x561b24ae1f16]
sql/sql_parse.cc:7782(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x561b24aed3a8]
sql/sql_parse.cc:1894(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x561b24ada747]
sql/sql_parse.cc:1405(do_command(THD*, bool))[0x561b24ad90fb]
sql/sql_connect.cc:1416(do_handle_one_connection(CONNECT*, bool))[0x561b24cc531d]
sql/sql_connect.cc:1320(handle_one_connection)[0x561b24cc5079]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x561b251e4d51]
nptl/pthread_create.c:478(start_thread)[0x7f2576a82609]
 
Query (0x7f2544015600): UPDATE x SET x = ( SELECT x , x FROM x EXCEPT SELECT x , 1 ^ CASE WHEN 1 = 1 THEN FALSE / 1 WHEN 1 = 1 THEN 1 ELSE 1 / 1 END + 1 ^ 1 FROM x WHERE x < 1 ORDER BY 1 ) NOT IN ( SELECT x , x ) WHERE x = 1

Comment by Alice Sherepa [ 2023-12-06 ]

please also check the test case from MDEV-32699

CREATE TABLE x ( x INT ) ;
INSERT INTO x ( x ) VALUES ( 1 ) ;
UPDATE x SET x = ( x , x , x ) < ( 1 , 1 , 1 ) , x = ( SELECT CASE WHEN ( 1 LIKE 1 * 1 ) THEN 1 / 1 ELSE x = 1 AND x = 1 AND CASE x WHEN 1 THEN 1 ELSE 1.000000 NOT LIKE 'x' END AND x = 1 END FROM x GROUP BY x UNION SELECT DISTINCT ( - 1.000000 >= - x = 1 AND x = 1 ) ISNULL FROM x ) IN ( SELECT DISTINCT x WHERE x BETWEEN ( SELECT x AS x FROM x AS x GROUP BY x HAVING x ) AND 1 ) WHERE x = 1 ;

mariadbd: /11.1/sql/item.cc:10755: virtual my_decimal* Item_type_holder::val_decimal(my_decimal*): Assertion `0' failed.
231108 11:27:58 [ERROR] mysqld got signal 6 ;
 
Server version: 11.1.3-MariaDB-debug-log source revision: 5d3e14d780a227d87ea2831481958ac4d5bbd905
 
/lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7fee928e2fd6]
sql/item.cc:10756(Item_type_holder::val_decimal(my_decimal*))[0x5579cf3ac686]
sql/item.h:1799(Item::val_decimal_result(my_decimal*))[0x5579cedeb730]
sql/item.cc:10467(Item_cache_decimal::cache_value())[0x5579cf3ab2ec]
sql/item.h:7117(Item_cache::has_value())[0x5579cf2606d8]
sql/item.h:7126(Item_cache::is_null())[0x5579cf2607a0]
sql/item_subselect.h:669(Item_in_subselect::disable_cond_guard_for_const_null_left_expr(int))[0x5579cf48dd75]
sql/item_subselect.cc:2404(Item_in_subselect::create_single_in_to_exists_cond(JOIN*, Item**, Item**))[0x5579cf47e38f]
sql/item_subselect.cc:2809(Item_in_subselect::create_in_to_exists_cond(JOIN*))[0x5579cf4808f5]
sql/opt_subselect.cc:7044(JOIN::choose_tableless_subquery_plan())[0x5579cf1e4fee]
sql/sql_select.cc:3417(JOIN::optimize_stage2())[0x5579cefe9053]
sql/sql_select.cc:2646(JOIN::optimize_inner())[0x5579cefe65ea]
sql/sql_select.cc:1944(JOIN::optimize())[0x5579cefe3cd6]
sql/sql_lex.cc:4847(st_select_lex::optimize_unflattened_subqueries(bool))[0x5579cef45e95]
sql/opt_subselect.cc:5866(JOIN::optimize_unflattened_subqueries())[0x5579cf1e1ef6]
sql/sql_select.cc:3227(JOIN::optimize_stage2())[0x5579cefe8815]
sql/sql_select.cc:2646(JOIN::optimize_inner())[0x5579cefe65ea]
sql/sql_select.cc:1944(JOIN::optimize())[0x5579cefe3cd6]
sql/sql_select.cc:33490(Sql_cmd_dml::execute_inner(THD*))[0x5579cf03e137]
sql/sql_update.cc:3076(Sql_cmd_update::execute_inner(THD*))[0x5579cf0e77e7]
sql/sql_select.cc:33439(Sql_cmd_dml::execute(THD*))[0x5579cf03df45]
sql/sql_parse.cc:4405(mysql_execute_command(THD*, bool))[0x5579cef7df16]
sql/sql_parse.cc:7782(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x5579cef893a8]
sql/sql_parse.cc:1894(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x5579cef76747]
sql/sql_parse.cc:1405(do_command(THD*, bool))[0x5579cef750fb]
sql/sql_connect.cc:1416(do_handle_one_connection(CONNECT*, bool))[0x5579cf16131d]
sql/sql_connect.cc:1320(handle_one_connection)[0x5579cf161079]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x5579cf680d51]
nptl/pthread_create.c:478(start_thread)[0x7fee92dfd609]
 
Query (0x7fee60015600): UPDATE x SET x = ( x , x , x ) < ( 1 , 1 , 1 ) , x = ( SELECT CASE WHEN ( 1 LIKE 1 * 1 ) THEN 1 / 1 ELSE x = 1 AND x = 1 AND CASE x WHEN 1 THEN 1 ELSE 1.000000 NOT LIKE 'x' END AND x = 1 END FROM x GROUP BY x UNION SELECT DISTINCT ( - 1.000000 >= - x = 1 AND x = 1 ) ISNULL FROM x ) IN ( SELECT DISTINCT x WHERE x BETWEEN ( SELECT x AS x FROM x AS x GROUP BY x HAVING x ) AND 1 ) WHERE x = 1

Comment by Oleg Smirnov [ 2024-01-22 ]

Fixed by MDEV-29070.

Generated at Thu Feb 08 10:33:20 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.