~/talk

Finding Bugs in Database Systems via Query Partitioning

Talkat OOPSLA 2020 · 2020-11-15..11-20· [databases, testing]
slides:none on file

Automated testing partitions a query into three cases — ϕ, NOT ϕ, and ϕ IS NULL — then recomposes them (using UNION ALL) and compares results; implemented as Ternary Logic Partitioning (TLP) inside SQLancer. It finds logic bugs (not crashes): about 200 unique bugs across MySQL, TiDB, CockroachDB, DuckDB and others. Concrete examples include MySQL returning an empty result for a 0 vs −0 equality and CockroachDB miscomputing MAX via incorrect partition composition. Continuous integration adoption shows it works.

AI-written summary · about

  1. 0:00Query Partitioning intro
  2. 1:05Logic bugs in DB systems
  3. 3:01Differential testing challenges
  4. 4:06Core idea of query partitioning
  5. 5:38Ternary Logic Partitioning strategy
  6. 7:41Testing WHERE clauses with TLP
  7. 8:33Testing aggregates with TLP
  8. 11:20SQLancer implementation
  9. 12:27TLP WHERE oracle effectiveness
  10. 13:15TLP adoption and impact
  11. 14:21Summary
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.