Miao Zhengjie, Roy Sudeepa, Yang Jun
Duke University.
Proc ACM SIGMOD Int Conf Manag Data. 2019 Jun-Jul;2019:1961-1964. doi: 10.1145/3299869.3320236.
We present a system called RATEST, designed to help debug relational queries against reference queries and test database instances. In many applications, e.g., classroom learning and regression testing, we test the correctness of a user query by evaluating it over a test database instance and comparing its result with that of evaluating a reference (correct) query over . If () differs from (), the user knows is incorrect. However, can be large (often by design), which makes debugging difficult. The key idea behind RATEST is to show the user a much smaller database instance ' ⊆ , which we call a such that (') ('). RATEST builds on data provenance and constraint solving, and employs a suite of techniques to support, at interactive speed, complex queries involving differences and group-by aggregation. We demonstrate an application of RATEST in learning: it has been used successfully by a large undergraduate database course in a university to help students with a relational algebra assignment.
我们提出了一个名为RATEST的系统,旨在帮助针对参考查询和测试数据库实例调试关系查询。在许多应用中,例如课堂学习和回归测试,我们通过在测试数据库实例上对用户查询进行求值,并将其结果与在该实例上对参考(正确)查询进行求值的结果进行比较,来测试用户查询的正确性。如果()与()不同,用户就知道是不正确的。然而,可能很大(通常是有意设计的),这使得调试变得困难。RATEST背后的关键思想是向用户展示一个小得多的数据库实例 ' ⊆ ,我们称之为一个,使得(') (')。RATEST基于数据起源和约束求解构建,并采用一套技术以交互速度支持涉及差异和分组聚合的复杂查询。我们展示了RATEST在学习中的一个应用:它已被一所大学的大型本科数据库课程成功用于帮助学生完成关系代数作业。