mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-12293 Assertion `table->no_keyread || !table->covering_keys.is_set(tab->index) || table->file->keyread == tab->index' failed
sometimes the optimizer starts a keyread on some index and later (but before any actual index accesses) changes it to a keyread on a different index
This commit is contained in:
6
mysql-test/r/keyread.result
Normal file
6
mysql-test/r/keyread.result
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
create table t1 (f1 int not null, f2 int, f3 int, primary key (f1,f2), key(f2,f3)) engine=innodb;
|
||||||
|
create view v1 as select * from t1 where f2 = 1;
|
||||||
|
select distinct f1 from v1;
|
||||||
|
f1
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
10
mysql-test/t/keyread.test
Normal file
10
mysql-test/t/keyread.test
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-12293 Assertion `table->no_keyread || !table->covering_keys.is_set(tab->index) || table->file->keyread == tab->index' failed
|
||||||
|
#
|
||||||
|
create table t1 (f1 int not null, f2 int, f3 int, primary key (f1,f2), key(f2,f3)) engine=innodb;
|
||||||
|
create view v1 as select * from t1 where f2 = 1;
|
||||||
|
select distinct f1 from v1;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
@@ -2858,10 +2858,9 @@ public:
|
|||||||
bool keyread_enabled() { return keyread < MAX_KEY; }
|
bool keyread_enabled() { return keyread < MAX_KEY; }
|
||||||
int ha_start_keyread(uint idx)
|
int ha_start_keyread(uint idx)
|
||||||
{
|
{
|
||||||
if (keyread_enabled())
|
int res= keyread_enabled() ? 0 : extra(HA_EXTRA_KEYREAD);
|
||||||
return 0;
|
|
||||||
keyread= idx;
|
keyread= idx;
|
||||||
return extra(HA_EXTRA_KEYREAD);
|
return res;
|
||||||
}
|
}
|
||||||
int ha_end_keyread()
|
int ha_end_keyread()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user