Debugging a database engine is an arduous task due to the complexity of the query workloads and systems. The first step in isolating a bug involves identifying a sequence of steps (or <i>repro</i>) that deterministically reproduces the problem. Repros are usually composed of various complex queries, which makes it very difficult to understand root causes and fix underlying bugs. Developers are thus burdened by the task of minimizing the repro as much as possible while still making it reproduce the original problem. In this paper we present FlexMin, a tool that automatically minimizes repros. FlexMin builds on previous repro minimization techniques, SIMP and delta-debugging, and makes two key contributions. First, FlexMin integrates previous approaches into a single, united technique that performs simplifications in a more focused manner. This approach is flexible and can incorporate hints to guide the search. Second, FlexMin introduces data minimization as a new facet in the minimization process, which is helpful when data is too large or sensitive to share in its entirety. We used FlexMin to isolate bugs in a commercial DBMS, and show that it consistently produces simpler repros more rapidly than prior techniques.
Unfortunately, ACM prohibits us from displaying non-influential references for this paper.
To see the full reference list, please visit http://dl.acm.org/citation.cfm?id=1988843.