开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
有趣的 Bugs #28 —— MySQL 5.6 回归测试中的问题 - 技术翻译 - 开源中国社区

有趣的 Bugs #28 —— MySQL 5.6 回归测试中的问题 【已翻译100%】

oschina 推荐于 4年前 (共 4 段, 翻译完成于 01-04) 评论 2
收藏  
16
推荐标签: MySQL 待读
参与翻译 (1人) : petert 仅中文 | 中英文对照 | 仅英文 | 打印此文章

对于MySQL社区来说2013是出彩的一年。随着MySQL 5.6 GA的发布,一款具有更大吞吐量、更高稳定性加上oracle方面与MySQL社区的频繁互动与合作为我们这年带来了很多的新鲜感触和远景。

不过新版本当中还是有不少顽固的问题。这些问题都引入了很多回溯缺陷regression bugs

依照以往的经验来说(我预计2014依然如此)有回溯(为了新功能而破坏原有功能)作用的缺陷在  http://bugs.mysql.com被标记为" regression"。这样更容易识别,这个连接就是那些缺陷列表 here is the list of regression bugs that affect MySQL 5.6 (有些回溯缺陷只出现在一些主版本上,就像有些缺陷修复只发生在某些版本上).

petert
 翻译得不错哦!

在5.6版本中只有31个开放的缺陷。但先别太乐观了。由于个别Oracle的工程师并没有遵照原来的习惯将那些回溯缺陷标记为"regression",所以还会漏掉很多回溯缺陷。以 Bug #69623为例,"since 5.5.32 & 5.6.12, innodb cant start with own multi-file tablespace"

使用多个以制表符间隔的文件时Innodb将无法启动。看标题就知道这是个回溯缺陷,但却没有被标记。所以还是会有很多未发现的缺陷(有些只有实际操作后才能发现)尽管大家都知道使用自动化测试"Automated testing 和设计良好的测试用例 test cases 能够减少缺陷,但不得不承认即使有了这些手段还是不能百分百确保质量的完善(也许会比其他提供MySQL版本的公司稍微好点).

petert
 翻译得不错哦!

我们看一下2013年在MySQL5.6当中最近发现的10个缺陷,来给大家一个直观的认识:

  • Bug #71244, "Wrong result computation using ALL() and GROUP BY".

    使用ALL()和GROUP BY功能结果错误

    之前的版本像是5.6.11是没有这个问题的。这个缺陷可以简单的采用避免在HAVING语句中使用聚合列的别名来修复,即便如此简单,回归测试还是没有发现它.


  • Bug #71220, "pow() function returns an error for bad values".

    输入特殊值后Pow()返回错误

    这是个典型的回溯缺陷。开发团队为了使MySQL语法更完善而做了更改。当从用户的角度来说,未得到任何的升级提示或是特别的说明。结果就是好心办坏事.

  • Bug #71095, "Wrong results with PARTITION BY LIST COLUMNS()".

    当我解决了客户提出的一个类似问题后提了这个缺陷(不同的方法将table分区)。这依然是很郁闷的事情(就和其他回溯缺陷一样)后来花了些时间添加了一个简单的测试用例。以后这个问题很快就能被检测出来并由Mattias Jonsson打了补丁(补丁解决了我的测试用例发现的问题)希望5.6.16中会修复这个问题.

  • Bug #71055, "Using IF EXISTS(SELECT * ...) acquires a lock when using read uncommitted". READ UNCOMMITTED isolation level功能很少被使用,所以也没办法确保被测试到。而locking SELECT被使用的几率就更小了。所以只能说测试用例并没有覆盖到READ UNCOMMITTED功能,不然Oracle的工程师不可能忽略这个自5.1.x后就出现的问题.

  • Bug #70819, "SHOW ENGINE INNODB MUTEX does NOT work with timed_mutex properly".

    就在准备PERFORMANCE_SCHEMA-相关的演讲时我就注意到这个未被标识出5.6或是5.5版本中的问题PERFORMANCE_SCHEMA不单单会替换SHOW PROFILE还会替换其他一些SHOW语句。但对于应该已经正常的功能(按照官方文档的说法),无论怎么说,都不应该错删其他语句.

  • Bug #70617, "Default persistent stats can cause unexpected long query times".

    这是个很好的例子代表了添加新功能后未能完善相关文档而造成的性能回溯问题。对于普通用户会发现在执行某些查询后会变得很慢。接着就会耗费好几个人好几个小时(希望不是几天)来找到问题的根源进而真正的解决掉这个问题,确保以后不会再出现。我曾经完整的post 跟踪过这个问题。那些足够详细的细节将迫使Oracle的工程师不得不认真面对这个问题...

  • Bug #70598, "Premature expression evaluation prevents short-circuited conditionals". 又一个MySQL从5.1升级到5.5后某些功能无法使用的例子。没有哪个版本可以提供帮助。即便解决办法找到了,难道仅仅因为用户升级了版本就要去更改代码,而去避免只有遇到后才算是问题的缺陷,这个想法本省就很有问题.

  • Bug #70491, "SELECT DISTINCT may return a wrong result if a join buffer is involved". 另一个性能优化后的回溯。这个应该能够被QA及时发现。这是MariaDB的Babaev提出的缺陷。说点闲话,5.6中很多缺陷都是在紧耦合设计后出现的,是该再好好考虑一下了.

  • Bug #70466, "No results when filesorting with a correlation in subquery's HAVING clause". 5.6版本中HAVING语句的回溯问题。Oracle开始依据6.0和其他一些新的概念进一步优化MySQL5.6,但很明显回归测试并没有提高测试覆盖率.

  • Bug #70351, "ALTER TABLE ADD CONSTRAINT xxx FOREIGN KEY adds two constraints". 大部分情况下MySQL主版本上的修复/更新都会发生。但就像这个问题一样,测试应该更加仔细的考虑回归测试覆盖率,否则就是出现回溯缺陷。这个缺陷就是因为一个小小的更新造成回溯缺陷的产生.

petert
 翻译得不错哦!

我要说的到了这里应该告一段落了,新年许愿的时刻马上就到了。我希望所有Oracle MySQL的工程师们在以后的工作中能更加审慎的考虑回归测试!

对Oracle MySQL团队的管理者们我希望你们能注意到那些处理了来自社区中缺陷的同僚们所付出过的努力,并嘉奖那些真正关注并努力过的个人。小小提示一下,重点关注那些正在解决上述缺陷的人,那些验证了这些缺陷的人(超过5个),那些添加了更多测试用例和提供补丁的人。这些人都是你们最有价值的财富,我希望你们能真正关注起来!

petert
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(2)
Ctrl/CMD+Enter

从最早的开始删除测试用例.到后来新闻的修改授权.看来这是有计划有步骤的故意削弱mysql的实用性. 还好替代方案已经出现,时候换换了.
5.6玩不起。。。已经换回5.5了。。。
顶部