From 8ce5635a3eb2c744136c9f19d49297406db94d46 Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Tue, 2 Nov 2021 11:26:35 +0300 Subject: MDEV-22284 Aria table key read crash because wrong index used When restoring lastinx last_key.keyinfo must be updated as well. The good example is in _ma_check_index(). The point of failure is extra(HA_EXTRA_NO_KEYREAD) in ha_maria::get_auto_increment(): 1. extra(HA_EXTRA_KEYREAD) saves lastinx; 2. maria_rkey() changes index, so the lastinx and last_key.keyinfo; 3. extra(HA_EXTRA_NO_KEYREAD) restores lastinx but not last_key.keyinfo. So we have discrepancy between lastinx and last_key.keyinfo after 3. --- mysql-test/suite/maria/maria.result | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'mysql-test/suite/maria/maria.result') diff --git a/mysql-test/suite/maria/maria.result b/mysql-test/suite/maria/maria.result index 1e85ee8b50c..f34e7ce8e5d 100644 --- a/mysql-test/suite/maria/maria.result +++ b/mysql-test/suite/maria/maria.result @@ -2850,3 +2850,14 @@ insert into t1 values (8,'0'); ERROR HY000: Table 't1' was locked with a READ lock and can't be updated unlock tables; drop table t1; +# +# MDEV-22284 Aria table key read crash because wrong index used +# +create table t1 ( +a int auto_increment, +b int, c int, +key(c, a), unique(b) +) engine aria +partition by hash (b); +replace into t1 values (1, 0, 0), (2, 0, 0), (0, 0, 0); +drop table t1; -- cgit v1.2.1