|
This testcase reproduces in 10.4+ only:
CREATE TABLE t0 (a INT) ENGINE=InnoDB PARTITION BY KEY(a);
|
INSERT INTO t0 VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0);
|
DELETE FROM t0 WHERE a=(SELECT * FROM t0 WHERE a=0);
|
Leads to:
|
10.10.0 63961a08a6203f4d58363a9321e4cf9c8b07a9fe (Debug)
|
mysqld: /test/10.10_dbg/sql/sql_error.cc:335: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.
|
|
10.10.0 63961a08a6203f4d58363a9321e4cf9c8b07a9fe (Debug)
|
Core was generated by `/test/MD290622-mariadb-10.10.0-linux-x86_64-dbg/bin/mysqld --no-defaults --core'.
|
Program terminated with signal SIGABRT, Aborted.
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
[Current thread is 1 (Thread 0x1514cc0b0700 (LWP 137537))]
|
(gdb) bt
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#1 0x00001514e4226859 in __GI_abort () at abort.c:79
|
#2 0x00001514e4226729 in __assert_fail_base (fmt=0x1514e43bc588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55e2935d0590 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=0x55e2935d0468 "/test/10.10_dbg/sql/sql_error.cc", line=335, function=<optimized out>) at assert.c:92
|
#3 0x00001514e4237fd6 in __GI___assert_fail (assertion=assertion@entry=0x55e2935d0590 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=file@entry=0x55e2935d0468 "/test/10.10_dbg/sql/sql_error.cc", line=line@entry=335, function=function@entry=0x55e2935d05c8 "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
|
#4 0x000055e2929ad175 in Diagnostics_area::set_ok_status (this=0x151494006b60, affected_rows=affected_rows@entry=0, last_insert_id=last_insert_id@entry=0, message=message@entry=0x0) at /test/10.10_dbg/sql/sql_error.h:1031
|
#5 0x000055e2929a6b01 in my_ok (message=0x0, id=0, affected_rows_arg=0, thd=0x151494000db8) at /test/10.10_dbg/sql/sql_class.h:5616
|
#6 mysql_delete (thd=thd@entry=0x151494000db8, table_list=0x151494013d30, conds=<optimized out>, order_list=order_list@entry=0x151494005ac0, limit=18446744073709551615, options=<optimized out>, result=<optimized out>) at /test/10.10_dbg/sql/sql_delete.cc:515
|
#7 0x000055e292a0386b in mysql_execute_command (thd=thd@entry=0x151494000db8, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/10.10_dbg/sql/sql_limit.h:85
|
#8 0x000055e2929ef372 in mysql_parse (thd=thd@entry=0x151494000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1514cc0af470) at /test/10.10_dbg/sql/sql_parse.cc:8036
|
#9 0x000055e2929fc95a in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x151494000db8, packet=packet@entry=0x15149400b6c9 "DELETE FROM t0 WHERE a=(SELECT * FROM t0 WHERE a=0)", packet_length=packet_length@entry=51, blocking=blocking@entry=true) at /test/10.10_dbg/sql/sql_class.h:1364
|
#10 0x000055e2929ff064 in do_command (thd=0x151494000db8, blocking=blocking@entry=true) at /test/10.10_dbg/sql/sql_parse.cc:1407
|
#11 0x000055e292b5efde in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55e2963c7568, put_in_cache=put_in_cache@entry=true) at /test/10.10_dbg/sql/sql_connect.cc:1418
|
#12 0x000055e292b5f4e7 in handle_one_connection (arg=0x55e2963c7568) at /test/10.10_dbg/sql/sql_connect.cc:1312
|
#13 0x00001514e4737609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#14 0x00001514e4323133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
Bug confirmed present in:
MariaDB: 10.4.26 (dbg), 10.5.17 (dbg), 10.7.5 (dbg), 10.8.4 (dbg), 10.9.2 (dbg), 10.10.0 (dbg)
Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.3.36 (dbg), 10.3.36 (opt), 10.4.26 (opt), 10.5.17 (opt), 10.6.9 (dbg), 10.6.9 (opt), 10.7.5 (opt), 10.8.4 (opt), 10.9.2 (opt), 10.10.0 (opt)
MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.38 (dbg), 5.7.38 (opt), 8.0.29 (dbg), 8.0.29 (opt)
|
|
Test cases from the above are still reproducible on 10.4-11.0, but not on 11.1,11.2 ( there - ER_SUBQUERY_NO_1_ROW (1242): Subquery returns more than 1 row)
But the weird test case below is reproducible on 10.4-11.2.
--source include/have_partition.inc
|
|
CREATE TABLE t1 ( pk int) partition BY KEY (pk) ;
|
DELETE FROM t1 WHERE COLUMN_ADD( 1, 3, 171, 3, 52) = pk ;
|
mysqld: /10.4/src/sql/sql_error.cc:335: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.
|
230802 17:07:40 [ERROR] mysqld got signal 6 ;
|
|
Server version: 10.4.31-MariaDB-debug-log source revision: ab10a675acb8198d4c772b807b81b50f97480d28
|
|
/lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7f1902b08fd6]
|
sql/sql_error.cc:340(Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*))[0x5590ef63e0bd]
|
sql/sql_class.h:5166(my_ok(THD*, unsigned long long, unsigned long long, char const*))[0x5590ef555281]
|
sql/sql_delete.cc:517(mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List<st_order>*, unsigned long long, unsigned long long, select_result*))[0x5590f036719f]
|
sql/sql_parse.cc:4815(mysql_execute_command(THD*))[0x5590ef713ef1]
|
sql/sql_parse.cc:8010(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x5590ef72a177]
|
sql/sql_parse.cc:1860(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x5590ef7005d9]
|
sql/sql_parse.cc:1378(do_command(THD*))[0x5590ef6fd104]
|
sql/sql_connect.cc:1420(do_handle_one_connection(CONNECT*))[0x5590efb0aa09]
|
sql/sql_connect.cc:1325(handle_one_connection)[0x5590efb0a2ad]
|
perfschema/pfs.cc:1871(pfs_spawn_thread)[0x5590f07b2dae]
|
nptl/pthread_create.c:478(start_thread)[0x7f1903023609]
|
/lib/x86_64-linux-gnu/libc.so.6(clone+0x43)[0x7f1902bf4133]
|
|
Query (0x62b0000a1290): DELETE FROM t1 WHERE COLUMN_ADD( 1, 3, 171, 3, 52) = pk
|
on non-debug:
MariaDB [test]> DELETE FROM t1 WHERE COLUMN_ADD( 1, 3, 171, 3, 52) = pk ;
|
ERROR 1919 (HY000): Encountered illegal format of dynamic column string
|
|