mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-6486: Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))'
failed with SELECT SQ, TEXT field The functon find_all_keys does call Item_subselect::walk, which calls walk() for the subquery The issue is that when a field is represented by Item_outer_ref(Item_direct_ref(Item_copy_string( ...))). Item_copy_string does have a pointer to an Item_field in Item_copy::item but does not implement Item::walk method, so we are not able to set the bitmap for that field. This is the reason why the assert fails. Fixed by adding the walk method to Item_copy class.
This commit is contained in:
@ -2483,5 +2483,18 @@ select 1 from dual where null not in (select 1 from t2);
|
||||
1
|
||||
1
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-6486: Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))'
|
||||
# failed with SELECT SQ, TEXT field
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(8), KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('foo'),( 'bar');
|
||||
CREATE TABLE t2 (b VARCHAR(8), c TINYTEXT, KEY(b)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('baz','baz'),('qux', 'qux');
|
||||
SELECT ( SELECT COUNT(*) FROM t1 WHERE a = c ) AS field, COUNT(DISTINCT c)
|
||||
FROM t2 WHERE b <= 'quux' GROUP BY field;
|
||||
field COUNT(DISTINCT c)
|
||||
0 1
|
||||
drop table t1,t2;
|
||||
SET optimizer_switch= @@global.optimizer_switch;
|
||||
set @@tmp_table_size= @@global.tmp_table_size;
|
||||
|
Reference in New Issue
Block a user