Detect logic bugs in DBMS的三篇论文

Testing Database Engines via Pivoted Query Synthesis论文

主要内容

  • 随机生成table和rows
  • 从每个表随机生成一行
  • 根据选择的rows随机生成表达式并评估结果
  • 修改表达式 直到返回真

领域

  • 检测logic bug,logic bug即是否返回正常的行

研究常用的方法

  • 差异性测试,不适用于所有DBMS

    image-20200618202218604

各项性能指标

  • 观察是否返回 随机生成的row

缺点

  • 不适用于大数据集
  • 可能只能做where里面的AST树

扩展知识点

  • AST树
  • 差异性比较

image-20200618202406294

Detecting Optimization Bugs in Database Engines via Non-Optimizing Reference Engine Construction论文

主要内容

  • 不正常的优化可能会导致logic bug

  • 核心:重写DBMS不能优化的潜在随机生成优化的query

  • 让DBMS不做优化,做全表的扫描

    image-20200618192500114

    • 左边是原本数据库会优化的,右边是数据库不会优化的。
  • image-20200618202756024

Ternary Logic Partitioning: Detecting Logic Bugs in Database Management Systems

主要内容

  • query分区,将一条给定原始的query,分成多份更复杂的queries,每个部分都计算结果的一部分。
  • 三元逻辑分区:

    • 基于一个布尔谓词p计算成True,False,NULL的观察
  • image-20200618192837917

image-20200618203712878

image-20200618203725136

0%