New Features¶ ↑
-
A provenance dataset extension has been added. This extension makes SQL queries include a comment describing how the dataset was built. This can make debugging complex cases significantly easier. Here’s a simple example:
DB.extension :provenance DB[:table]. select(:a). where{b > 10}. order(:c). limit(10) # SQL: # SELECT a FROM table WHERE (b > 10) ORDER BY c LIMIT 10 -- # -- Dataset Provenance # -- Keys:[:from] Source:(eval at bin/sequel:257):2:in `<main>' # -- Keys:[:select] Source:(eval at bin/sequel:257):3:in `<main>' # -- Keys:[:where] Source:(eval at bin/sequel:257):4:in `<main>' # -- Keys:[:order] Source:(eval at bin/sequel:257):5:in `<main>' # -- Keys:[:limit] Source:(eval at bin/sequel:257):6:in `<main>'
With the above example, it’s obvious how the dataset is created, but but in real applications, where datasets can be built from multiple files, seeing where each dataset clone was made can be helpful.
The source listed will skip locations in the Ruby standard library as well as
Sequel
itself. Other locations can be skipped by providing a Database :provenance_caller_ignore Regexp option:DB.opts[:provenance_caller_ignore] = /\/gems\/library_name-/