mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 01:34:17 +01:00
MDEV-18249 ASSERT_COLUMN_MARKED_FOR_READ failed in ANALYZE TABLE
The problem is the same as in MDEV-18166: columns in virtual field expression are not marked for read, while the field itself does. field->register_field_in_read_map() should be called for read-marking all fields. The test is reproduced only in 10.4+, however the fix is applicable to 10.2+.
This commit is contained in:
parent
f64a4f672a
commit
191cae2d0d
4 changed files with 29 additions and 2 deletions
|
@ -267,3 +267,12 @@ DELETE FROM v1 ORDER BY v LIMIT 4;
|
|||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-18249 ASSERT_COLUMN_MARKED_FOR_READ failed in ANALYZE TABLE
|
||||
--echo #
|
||||
|
||||
create table t1 (c varchar(3) not null, v varchar(4) as (c) virtual);
|
||||
insert into t1 (c) values ('a'),('b');
|
||||
analyze table t1 persistent for columns (v) indexes ();
|
||||
|
||||
|
|
|
@ -303,6 +303,15 @@ INSERT INTO t1 (d) VALUES ('2004-04-19 15:37:39.123'),('1985-12-24 10:15:08.456'
|
|||
DELETE FROM v1 ORDER BY v LIMIT 4;
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
#
|
||||
# MDEV-18249 ASSERT_COLUMN_MARKED_FOR_READ failed in ANALYZE TABLE
|
||||
#
|
||||
create table t1 (c varchar(3) not null, v varchar(4) as (c) virtual);
|
||||
insert into t1 (c) values ('a'),('b');
|
||||
analyze table t1 persistent for columns (v) indexes ();
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
DROP VIEW IF EXISTS v1,v2;
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
|
|
|
@ -303,6 +303,15 @@ INSERT INTO t1 (d) VALUES ('2004-04-19 15:37:39.123'),('1985-12-24 10:15:08.456'
|
|||
DELETE FROM v1 ORDER BY v LIMIT 4;
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
#
|
||||
# MDEV-18249 ASSERT_COLUMN_MARKED_FOR_READ failed in ANALYZE TABLE
|
||||
#
|
||||
create table t1 (c varchar(3) not null, v varchar(4) as (c) virtual);
|
||||
insert into t1 (c) values ('a'),('b');
|
||||
analyze table t1 persistent for columns (v) indexes ();
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
DROP VIEW IF EXISTS v1,v2;
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
|
|
|
@ -838,7 +838,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||
enum enum_field_types type= (*field_ptr)->type();
|
||||
if (type < MYSQL_TYPE_MEDIUM_BLOB ||
|
||||
type > MYSQL_TYPE_BLOB)
|
||||
bitmap_set_bit(tab->read_set, fields);
|
||||
tab->field[fields]->register_field_in_read_map();
|
||||
else
|
||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
ER_NO_EIS_FOR_FIELD,
|
||||
|
@ -866,7 +866,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||
enum enum_field_types type= tab->field[pos]->type();
|
||||
if (type < MYSQL_TYPE_MEDIUM_BLOB ||
|
||||
type > MYSQL_TYPE_BLOB)
|
||||
bitmap_set_bit(tab->read_set, pos);
|
||||
tab->field[pos]->register_field_in_read_map();
|
||||
else
|
||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
ER_NO_EIS_FOR_FIELD,
|
||||
|
|
Loading…
Add table
Reference in a new issue