TL;DR
NoREC is an automatic method for detecting optimization bugs in database systems by comparing optimized and non-optimized query results, uncovering previously unknown bugs across multiple popular DBMS.
Contribution
The paper introduces NoREC, a novel approach that automatically constructs non-optimizing query versions to detect optimization bugs in DBMS, demonstrating its effectiveness across several systems.
Findings
Detected 159 previously unknown bugs in four DBMS
Fixed 141 bugs identified by NoREC in the tested systems
NoREC is effective, general, and easy to implement
Abstract
Database Management Systems (DBMS) are used ubiquitously. To efficiently access data, they apply sophisticated optimizations. Incorrect optimizations can result in logic bugs, which cause a query to compute an incorrect result set. We propose Non-Optimizing Reference Engine Construction (NoREC), a fully-automatic approach to detect optimization bugs in DBMS. Conceptually, this approach aims to evaluate a query by an optimizing and a non-optimizing version of a DBMS, to then detect differences in their returned result set, which would indicate a bug in the DBMS. Obtaining a non-optimizing version of a DBMS is challenging, because DBMS typically provide limited control over optimizations. Our core insight is that a given, potentially randomly-generated optimized query can be rewritten to one that the DBMS cannot optimize. Evaluating this unoptimized query effectively corresponds to a…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
