本周MySQL verified的bug列表(11月8日至11月14日)
1. Bug #70859-DWITH_EXAMPLE_STORAGE_ENGINE=1 is ignored
备注:CMake的问题,导致无法把Example_storage_engine编译进binary,此bug可忽略;
2.Bug #70863Wrong error message on a failed ALTER .. LOCK=NONE attempt
备注:online ddl的问题,适用版本5.6.14。MyISAM存储引擎在指定Lock=none时无法执行DDL语句,此时提示的错误信息为“ERROR 1845 (0A000): LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.”,但实际上指定Lock=shared是可以执行的。指定Lock=shared时适用的算法是COPY,而不是更高效的INPLACE。指定Lock=EXCLUSIVE时使用的是INPLACE,因此此error信息可能会造成使用者的误解。
3.Bug #70865COM_CHANGE_USER redundant packet
备注:MySQL的鉴权处理逻辑是(1.server端向client端发送随机的scramble; 2.client使用这个scramble生成加密的密码发送回server;3.server检查发回的代码);当client在一开始就使用适当的plugin时,无需此次交互过程。
4.Bug #70867Wrong OS error number reported in error log during failure at startup
备注:InnoDB启动时,如果由于权限问题无法启动,有一条报错语句是“InnoDB: File operation call: 'create' returned OS error 113.”,而实际正确的错误码应该是13“OS error code 13: Permission denied”;
5.Bug #70877DCL statement is failing on slave with replicate-ignore-db=mysql
备注: 理论上,如果指定“replicate-ignore-db=mysql”,在master上执行的DCL语句不应该复制到slave。但实际上,如果在非mysql的schema上执行DCL语句,是会被复制到slave的(因为binlog在DCL语句前会附加一个use db;)。同时,如果在master上试着update/delete一个不存在的用户,replication将会报错。
6.Bug #70886MIN/MAX optimizer doesn't take into account type conversions
备注:5.5和5.6都可以重现。优化器相关的bug,“MIN/MAX optimizer doesn't take into account type conversions. This means that queries may return different values depending on whether the table has an index.”
具体重现看下边的示例:
create table t2 ( a char(10) not null, key(a)) engine=innodb;
insert into t2 values ('foo-123'); insert into t2 values ('-1234'); insert into t2 values ('-99'); insert into t2 values ('-99999'); MySQL [test]> select max(a) from t2 where a < 432; +--------+ | max(a) | +--------+ | -99999 | +--------+ 1 row in set (0.00 sec) MySQL [test]> select max(a) from t2 ignore index(a) where a < 432; +---------+ | max(a) | +---------+ | foo-123 | +---------+ 1 row in set, 4 warnings (0.00 sec)
7.Bug #70891Server writes into world-writable file even after warning about it
备注:文件权限问题。MySQL对一个具有world writable的符号链接的写入,可能绕过Linux本身的文件权限管理。(比如一个/etc/NOT_PASSWD是只限root读写的,但在data目录下创建一个world writable可读写的符号链接链向这个文件,这样MySQL就有可能通过写入这个符号链接修改原始文件内容。bug描述中提到的uuid是5.6开始有的一个特性,用于构成gtid)。
8.Bug #70898Manual declares size in KB valid for innodb_data_file_path, but it does not work
备注: --innodb-data-file-path字段不能指定xxxKB。如“--innodb-data-file-path="ibdata1:20480K:autoextend"”会导致server启动报错。
本周MySQL Open的bug列表(11月8日至11月14日)
1.Bug #70901ORDER BY of a TEXT column doesn't use the same ordering as the < > = operators
备注:在5.5和5.6版本上均可重现。是TEXT类型的字段,直接比较和使用order by排序,产生的结果不一致。具体可看下边的重现步骤:
root@test 12:40:56>use test;
Database changed
root@test 02:51:29>drop table if exists t;
Query OK, 0 rows affected (0.01 sec)
root@test 02:51:30>create table t (v text collate utf8_bin);
Query OK, 0 rows affected (0.01 sec)
root@test 02:51:47>insert into t values ('');
Query OK, 1 row affected (0.00 sec)
root@test 02:51:59>insert into t values ('
');
Query OK, 1 row affected (0.01 sec)
root@test 02:52:05>select hex(t1.v), hex(t2.v), t1.v < t2.v as `<`, t1.v = t2.v as `=`, t1.v > t2.v as `>` from t t1 join t t2 order by t1.v, t2.v;
+-----------+-----------+------+------+------+
| hex(t1.v) | hex(t2.v) | < | = | > |
+-----------+-----------+------+------+------+
| | | 0 | 1 | 0 |
| | 0A0A | 0 | 0 | 1 |
| 0A0A | | 1 | 0 | 0 |
| 0A0A | 0A0A | 0 | 1 | 0 |
+-----------+-----------+------+------+------+
4 rows in set (0.00 sec)
2.Bug #70895Replication failure for data from version 5.6 to 5.5
备注:binlog和relaylog不支持向前兼容。
3.Bug #70879Error Code: 1785 when executing simple UPDATE statement
备注:5.6.14版本上,打开binlog,执行update语句在slave上报错的一个bug。待重现。。
4.Bug #70883"hash index ref_count is not zero" MySQL to freeze - impossible to shutdown
备注:自适应hash索引引用计数相关的一个bug,会导致MySQL hang住。提到的小版本是:“ 5.5.30-mariadb1~squeeze”,待重现
5.Bug #70899unnecessary buf_flush_list() during recovery
备注:buf_flush_list()这个逻辑是否需要以及在何条件下执行,修改后可能极大的提高大buffer pool场景下recover的速度。待确认。