Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
Query generalization: a method for interpreting null answers
Proceedings from the first international workshop on Expert database systems
Optimization of nested SQL queries revisited
SIGMOD '87 Proceedings of the 1987 ACM SIGMOD international conference on Management of data
On optimizing an SQL-like nested query
ACM Transactions on Database Systems (TODS)
A note on the translation of SQL to tuple calculus
ACM SIGMOD Record
Algorithmic Program DeBugging
Practical aspects of declarative debugging in Haskell 98
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Analyzing plan diagrams of database query optimizers
VLDB '05 Proceedings of the 31st international conference on Very large data bases
Making database systems usable
Proceedings of the 2007 ACM SIGMOD international conference on Management of data
A SQL: 1999 code generator for the pathfinder xquery compiler
Proceedings of the 2007 ACM SIGMOD international conference on Management of data
A lightweight interactive debugger for haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
A genetic approach for random testing of database systems
VLDB '07 Proceedings of the 33rd international conference on Very large data bases
Data-intensive XQuery debugging with instant replay
XIME-P '07 Proceedings of the 4th international workshop on XQuery implementation, experience and perspectives
Debugging: the good, the bad, and the quirky -- a qualitative analysis of novices' strategies
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Debugging: an analysis of bug-location strategies
Human-Computer Interaction
Generating example data for dataflow programs
Proceedings of the 2009 ACM SIGMOD International Conference on Management of data
Proceedings of the 2009 ACM SIGMOD International Conference on Management of data
Interactive plan hints for query optimization
Proceedings of the 2009 ACM SIGMOD International Conference on Management of data
Provenance in Databases: Why, How, and Where
Foundations and Trends in Databases
Minimizing database repros using language grammars
Proceedings of the 13th International Conference on Extending Database Technology
How to ConQueR why-not questions
Proceedings of the 2010 ACM SIGMOD International Conference on Management of data
Explaining missing answers to SPJUA queries
Proceedings of the VLDB Endowment
True language-level SQL debugging
Proceedings of the 14th International Conference on Extending Database Technology
A survey on algorithmic debugging strategies
Advances in Engineering Software
PerfXplain: debugging MapReduce job performance
Proceedings of the VLDB Endowment
Declarative debugging of wrong and missing answers for SQL views
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Wondering why data are missing from query results?: ask conseil why-not
Proceedings of the 22nd ACM international conference on Conference on information & knowledge management
Hi-index | 0.00 |
We describe Habitat, a declarative observational debugger for SQL. Habitat facilitates true language-level (not: plan-level) debugging of, probably flawed, SQL queries that yield unexpected results. Users mark SQL subexpressions of arbitrary size and then observe whether these evaluate as expected. Habitat understands query nesting and free row variables in correlated subqueries, and generally aims to not constrain users while suspect subexpressions are marked for observation. From the marked SQL text, Habitat's algebraic compiler derives a new query whose result represents the values of the desired observations. These observations are generated by the target SQL database host itself and are derived from the original data: Habitat does not require prior data extraction or extra debugging middleware. Experiments with TPC-H database instances indicate that observations impose a runtime overhead sufficiently low to allow for interactive debugging sessions.