Database Management Systems (DBMSs) provide efficient data retrieval and manipulation for many applications through Structured Query Language (SQL). Incorrect implementations can result in logic bugs, which cause a SELECT query to fetch an incorrect result, or an UPDATE / DELETE query to generate an incorrect database state. Existing approaches mainly focus on detecting logic bugs in SELECT queries. However, logic bugs in UPDATE / DELETE queries have not been tackled.
In this paper, we propose a novel and general approach, which we have termed Differential Query Execution (\emph{DQE}) to detect logic bugs in DBMSs. The core idea of DQE is that different SQL queries with the same predicate usually access the same rows in a database. For example, a row updated by an UPDATE query with a predicate $\varphi$ should also be fetched by the SELECT query with the same predicate $\varphi$. If not, a logic bug is revealed in the target DBMS. To evaluate the effectiveness and generality of DQE, we apply DQE on five production-level DBMSs, including MySQL, MariaDB, TiDB, CockroachDB and SQLite. In total, we have detected 50 unique bugs in these DBMSs, 41 of which are confirmed, and 11 have been fixed. We expect that the simplicity and generality of DQE can be widely used to improve the quality of DBMSs.
Fri 19 MayDisplayed time zone: Hobart change
| 11:00 - 12:30 | Testing of database and low-level softwareTechnical Track / SEIP - Software Engineering in Practice / DEMO - Demonstrations / Journal-First Papers at Meeting Room 109 Chair(s): Michael Pradel University of Stuttgart | ||
| 11:0015m Talk | Compiler Test-Program Generation via Memoized Configuration Search Technical Track Junjie Chen Tianjin University, Chenyao Suo College of Intelligence and Computing, Tianjin University, Jiajun Jiang Tianjin University, Peiqi Chen College of Intelligence and Computing, Tianjin University, Xingjian Li College of Intelligence and Computing, Tianjin University | ||
| 11:1515m Talk | Generating Test Databases for Database-Backed Applications Technical Track | ||
| 11:3015m Talk | Testing Database Engines via Query Plan Guidance Technical TrackPre-print | ||
| 11:4515m Talk | Testing Database Systems via Differential Query Execution Technical Track Jiansen Song , Wensheng Dou Institute of Software Chinese Academy of Sciences, Ziyu Cui Institute of Software Chinese Academy of Sciences, Qianwang Dai Institute of Software Chinese Academy of Sciences, Wei Wang , Jun Wei Institute of Software at Chinese Academy of Sciences; University of Chinese Academy of Sciences; University of Chinese Academy of Sciences Chongqing School, Hua Zhong Institute of Software Chinese Academy of Sciences, Tao Huang Institute of Software Chinese Academy of SciencesPre-print | ||
| 12:0015m Talk | Achieving Last-Mile Functional Coverage in Testing Chip Design Software Implementations SEIP - Software Engineering in Practice Ming Yan College of Intelligence and Computing, Tianjin University, Junjie Chen Tianjin University, Hangyu Mao , Jiajun Jiang Tianjin University, Jianye Hao Tianjin University, Xingjian Li College of Intelligence and Computing, Tianjin University, Zhao Tian Tianjin University, Zhichao Chen , Dong Li , Dong Li , Yanwei Guo , Wulong Liu , Bin Wang , Yuefeng Sun , Yongshun Cui  | ||
| 12:157m Talk | Randomized Differential Testing of RDF Stores DEMO - Demonstrations Rui Yang Institute of Software, Chinese Academy of Sciences, Yingying Zheng Institute of Software Chinese Academy of Sciences, Lei Tang Institute of Software Chinese Academy of Sciences, Wensheng Dou Institute of Software Chinese Academy of Sciences, Wei Wang , Jun Wei Institute of Software at Chinese Academy of Sciences; University of Chinese Academy of Sciences; University of Chinese Academy of Sciences Chongqing SchoolPre-print | ||
| 12:227m Talk | Boosting Compiler Testing via Compiler Optimization Exploration Journal-First Papers Junjie Chen Tianjin University, Chenyao Suo College of Intelligence and Computing, Tianjin University | ||



