Details
-
Bug
-
Status: Closed (View Workflow)
-
Blocker
-
Resolution: Fixed
-
10.3.5, 10.4.0
Description
--source include/have_innodb.inc
|
--source include/have_partition.inc
|
|
CREATE TABLE t1 (a INT) |
ENGINE=InnoDB
|
PARTITION BY RANGE (a) ( |
PARTITION p0 VALUES LESS THAN (6), |
PARTITION pn VALUES LESS THAN MAXVALUE |
);
|
INSERT INTO t1 VALUES (4),(5),(6); |
ALTER TABLE t1 MODIFY a INT AUTO_INCREMENT PRIMARY KEY; |
UPDATE t1 PARTITION (p0) SET a = 3 WHERE a = 5; |
|
# Cleanup
|
DROP TABLE t1; |
10.3 82490a97db |
#3 <signal handler called>
|
#4 0x000055e0922036ec in ha_innobase::update_thd (this=0x7ff5100a6738, thd=0x7ff510000b00) at /data/src/10.3/storage/innobase/handler/ha_innodb.cc:2946
|
#5 0x000055e0921f3e02 in ha_innobase::info_low (this=0x7ff5100a6738, flag=64, is_analyze=false) at /data/src/10.3/storage/innobase/handler/ha_innodb.cc:13837
|
#6 0x000055e0921f49e4 in ha_innobase::info (this=0x7ff5100a6738, flag=64) at /data/src/10.3/storage/innobase/handler/ha_innodb.cc:14151
|
#7 0x000055e092631e8c in ha_partition::info (this=0x7ff5100a8a98, flag=64) at /data/src/10.3/sql/ha_partition.cc:8157
|
#8 0x000055e0926367d1 in ha_partition::update_next_auto_inc_val (this=0x7ff5100a8a98) at /data/src/10.3/sql/ha_partition.cc:10322
|
#9 0x000055e092627c4b in ha_partition::update_row (this=0x7ff5100a8a98, old_data=0x7ff510170480 "\377\005", new_data=0x7ff510170478 "\377\003") at /data/src/10.3/sql/ha_partition.cc:4453
|
#10 0x000055e091ed3003 in handler::ha_update_row (this=0x7ff5100a8a98, old_data=0x7ff510170480 "\377\005", new_data=0x7ff510170478 "\377\003") at /data/src/10.3/sql/handler.cc:6269
|
#11 0x000055e091cc68e0 in mysql_update (thd=0x7ff510000b00, table_list=0x7ff510014e30, fields=..., values=..., conds=0x7ff510015810, order_num=0, order=0x0, limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false, found_return=0x7ff565e2a6f0, updated_return=0x7ff565e2a7b0) at /data/src/10.3/sql/sql_update.cc:947
|
#12 0x000055e091bce24d in mysql_execute_command (thd=0x7ff510000b00) at /data/src/10.3/sql/sql_parse.cc:4581
|
#13 0x000055e091bd9669 in mysql_parse (thd=0x7ff510000b00, rawbuf=0x7ff510014cd8 "UPDATE t1 PARTITION (p0) SET a = 3 WHERE a = 5", length=46, parser_state=0x7ff565e2b5f0, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:8092
|
#14 0x000055e091bc681d in dispatch_command (command=COM_QUERY, thd=0x7ff510000b00, packet=0x7ff510161011 "UPDATE t1 PARTITION (p0) SET a = 3 WHERE a = 5", packet_length=46, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:1851
|
#15 0x000055e091bc5241 in do_command (thd=0x7ff510000b00) at /data/src/10.3/sql/sql_parse.cc:1396
|
#16 0x000055e091d2d256 in do_handle_one_connection (connect=0x55e094dc39d0) at /data/src/10.3/sql/sql_connect.cc:1402
|
#17 0x000055e091d2cfda in handle_one_connection (arg=0x55e094dc39d0) at /data/src/10.3/sql/sql_connect.cc:1308
|
#18 0x000055e0921c78dd in pfs_spawn_thread (arg=0x55e094dcc0c0) at /data/src/10.3/storage/perfschema/pfs.cc:1862
|
#19 0x00007ff5727ca494 in start_thread (arg=0x7ff565e2c700) at pthread_create.c:333
|
#20 0x00007ff570bb093f in clone () from /lib/x86_64-linux-gnu/libc.so.6
|
All of debug, non-debug and ASAN builds crash with SIGSEGV.
Not reproducible on 10.2.
Attachments
Issue Links
- duplicates
-
MDEV-20910 INSERTs into specific partitions crashing server
-
- Closed
-
- is caused by
-
MDEV-11084 Select statement with partition selection against MyISAM table opens all partitions
-
- Closed
-
- is duplicated by
-
MDEV-19907 In Partiitioned table using HASH, AUTOINCREMENT value reverts to original CREATE TABLE value when INSERTing explicitly to empty partition immediately after ANALYZE TABLE.
-
- Closed
-
-
MDEV-20718 Crash on insert with PARTITION clause after TRUNCATE
-
- Closed
-
- relates to
-
MDEV-24610 Assertion `auto_increment_value' failed in ha_partition::info on INSERT into MEMORY table
-
- Closed
-
The problem is that ha_partition::open_read_partitions() is not opening all partitions that the UPDATE statement is accessing. I found this out by setting a breakpoint on ha_innobase::open() and noticing that the this pointer that is passed to ha_innobase::update_thd() did not occur previously. After the ALTER TABLE, only the first partition is being accessed.
On the first look, the UPDATE should only access the first partition, but in reality it is accessing all partitions, because the auto-increment counter is being updated on all partitions.
Apparently
MDEV-11084is missing an adjustment for this special case (updating AUTO_INCREMENT value).I verified that the crash was introduced by this change that implements MDEV-11084 . There was no crash with the parent commit.