2023年夏:在PlanetScale进行Vitess模糊测试

2023年夏:在PlanetScale进行Vitess模糊测试

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

Arvind Murty在PlanetScale实习期间,致力于Vitess的开发。他通过清理内部工作开始贡献,然后在Andrés Taylor的指导下进行实习。他的任务是在Vitess规划器中找到尽可能多的错误。他们构建了随机查询生成器,并对Vitess和MySQL的结果进行比较。他们还改进了查询简化器和随机表达式生成器。通过这个项目,他学到了团队合作和软件开发的经验。

🔎

延伸解读

为何不直接使用SQLancer

文章指出,SQLancer虽在SQLite和MySQL上成功,但直接用于Vitess存在三个障碍:Vitess需完全模仿MySQL包括怪癖,而SQLancer依赖oracle判断逻辑正确性;Vitess有VSchema层,分片键等影响查询规划;且SQLancer各DBMS测试器独立编写,集成工作量大。因此团队决定自建随机查询生成器。

自建模糊测试器的关键改进

团队基于Andrés已有的随机查询模糊器扩展,支持聚合、GROUP BY、ORDER BY和LIMIT。为提升测试效果,他们改进了查询简化器,使其能处理端到端测试所需的VSchema信息;还增强了随机表达式生成器,加入列引用和聚合,并确保聚合只出现在允许的语句和子句中。

当前局限与后续方向

模糊测试器目前仅使用EMP和DEPT表,基于EMPNO和DEPTNO的标准分片,模式与VSchema固定。作者认为首要改进是复杂化或随机化schema和VSchema。此外,代码中仍有testFailingQueries标志阻止已知失败查询,随着规划器改进,该标志可删除或至少从多处移除。

❓

Q&A

Arvind Murty在PlanetScale实习期间的主要任务是什么?

他的主要任务是在Vitess规划器中找到尽可能多的错误。

Arvind是如何开始参与Vitess项目的?

他在高中时接触到Vitess,认为这是一个适合参与的开源项目,因此开始贡献。

在实习期间,Arvind使用了哪些工具进行测试?

他使用了SQLancer工具来测试数据库管理系统,但由于与Vitess的集成存在挑战,最终决定构建自己的随机查询生成器。

Arvind在实习中学到了哪些经验?

他学到了团队合作和软件开发的经验,并感谢了团队成员的支持。

构建随机查询生成器的过程遇到了什么挑战?

构建随机查询生成器并不简单,产生了许多失败的查询,且需要对查询简化器和随机表达式生成器进行改进。

Arvind在实习期间的时间范围是什么?

他在2023年5月至7月期间在PlanetScale实习。

🏷️

标签

➡️

继续阅读