mysql innodb引擎 关于分区表的bug

时间:2022-09-24 10:16:58
mysql bug:
version :windows下的5.7.17-log和linux下的5.7.17-0ubuntu0.16.04.2
步骤如下:

1.使用如下语句创建表:

create table t(
id int)engine=innodb
partition by range(id)(
partition p0 values less than (10),
partition p1 values less than (20));
2.然后使用如下语句插入数据:
insert into t select 9;
insert into t select 10;
insert into t select 15;
3.执行如下的查询语句:
select *from information_schema.partitions where table_schema=database() and table_name='t'\G
显示的结果是:
    1:row
    .
    .
    .
    table_rows:1
    .
    .
    .
    2:row
    .
    .
    .
    table_rows:2
    .
    .
    .
4.执行如下修改表语句来添加分区:
alter table t add partition(
partition p2 values less than maxvalue);
5.执行3中的select语句:
显示结果:
    1:row
    .
    .
    .
    table_rows:0
    .
    .
    .
    2:row
    .
    .
    .table_rows:2
    .
    .
    .
    3:row
    .
    .
    .
    table_rows:0
    .
    .
    .
推断:
1:row变成了0,然而select*form t;表数据在表alter前后并没有变化
尝试在建表的时候指定表类型为:MyISAM,执行上述过程,发现这个由alter table只存在于innodb存储引擎
那么一定时bug,不可能是语法
然后又尝试了将4中的步骤改成执行alter table t modify id int(4);然后执行3步骤的查询也出现了1:row中的table_rows为0的情况。
总结:
在我所尝试的两个版本(windows下的5.7.17-log和linux下的5.7.17-0ubuntu0.16.04.2)中存在alter table 语句修改innodb存储引擎的分区表时,影响information_schema.partition下此innodb表的第一个分区的table_rows,使其被置为0