mirror of
https://github.com/MariaDB/server.git
synced 2025-08-24 14:48:09 +03:00
* handler::get_auto_increment() was not expecting any errors from the storage engine. That was wrong, errors could happen. * ha_partition::get_auto_increment() was doing index lookups in partition under a mutex. This was redundant (engine transaction isolation was covering that anyway) and harmful (causing deadlocks).
37 lines
791 B
Plaintext
37 lines
791 B
Plaintext
create table t1 (a int auto_increment, b bigint(20), primary key (b,a)) engine=tokudb;
|
|
start transaction;
|
|
insert t1 (b) values (1);
|
|
set tokudb_lock_timeout=1;
|
|
insert t1 (b) values (1);
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
set tokudb_lock_timeout=default;
|
|
insert t1 (b) values (1);
|
|
insert t1 (b) values (1);
|
|
commit;
|
|
commit;
|
|
select * from t1;
|
|
a b
|
|
1 1
|
|
2 1
|
|
3 1
|
|
alter table t1 partition by range (b) (partition p0 values less than (9));
|
|
start transaction;
|
|
insert t1 (b) values (2);
|
|
set tokudb_lock_timeout=1;
|
|
insert t1 (b) values (2);
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
set tokudb_lock_timeout=default;
|
|
insert t1 (b) values (2);
|
|
insert t1 (b) values (2);
|
|
commit;
|
|
commit;
|
|
select * from t1;
|
|
a b
|
|
1 1
|
|
2 1
|
|
3 1
|
|
1 2
|
|
2 2
|
|
3 2
|
|
drop table t1;
|