#sqitch
- Sqitch Update: The Plan
https://justatheory.com/2012/05/sqitch-plan
I gave my first presentation on Sqitch at PGCon last week. The slides are on Slideshare and the PGCon site. It came together at the last minute, naturally. I was not able to pay as close attention to PGCon sessions as I would have liked, as I was doing last minute hacking to get the deploy command working on PostgreSQL, and then writing the slides (which are based on the tutorial). I was pleased with the response, given that this is very much a project that is still under heavy development and available only as a very very early alpha. There was great discussion and feedback afterward, which I appreciate.
- Sqitch: Where to Define Dependencies?
https://justatheory.com/2012/05/sqitch-dependencies
- Thinking about Changing Sqitch Change IDs
https://justatheory.com/2012/11/changing-sqitch-ids
- Data Deployment with Sqitch
https://justatheory.com/2013/08/data-deployment-with-sqitch
- Sqitch: Back to the VCS
https://justatheory.com/2012/06/sqitch-vcs-again
- The Ever Evolving Sqitch Plan
https://justatheory.com/2012/05/evolving-sqitch-plan
- Sqitch Symbolism
https://justatheory.com/2012/09/sqitch-symbolism
- Sqitch Status: A Step at a Time
https://justatheory.com/2012/05/sqitch-steps
- Sqitch Goes Vertical
https://justatheory.com/2014/09/sqitch-goes-vertical
- Sqitch Templating
https://justatheory.com/2013/09/sqitch-templating
Last week saw the v.980 release of Sqitch, a database change management system. The headline feature in this version is support for MySQL 5.6.4 or higher. Why 5.6.4 rather than 5.1 or even 5.5? Mainly because 5.6.4 finally added support for fractional seconds in DATETIME columns (details in the release notes). This feature is essential for Sqitch, because changes often execute within a second of each other, and the deploy time is included in the log table’s primary key.
- Sqitch Status: Add User Info?
https://justatheory.com/2012/07/sqitch-user-info
- Sqitch: Depend On It!
https://justatheory.com/2012/08/sqitch-depend-on-it
- Templating Tests with Sqitch
https://justatheory.com/2014/01/templating-tests-with-sqitch
- Sqitch — VCS-powered SQL Change Management
https://justatheory.com/2012/04/sqitch-draft
Back in January, I wrote three posts outlining some ideas I had about a straight-forward, sane way of managing SQL change management. The idea revolved around specifying scripts to deploy and revert in a plan file, and generating that plan file from VCS history. I still feel pretty good about the ideas there, and work has agreed to let me write it and open-source it. Here is the first step making it happen. I call it “Sqitch.”
- Sqitch Update
https://justatheory.com/2012/04/sqitch-update
A quick update on Sqitch. I started implementation about a couple of weeks ago. It’s coming a long a bit more slowly than I’d like, given that I need to give a presentation on it soon. But I did things a little differently than I usually do with project like this: I wrote documentation first. In addition to the basic docs I posted a couple weeks back, I’ve written a tutorial. I put quite a lot of time into it, studying the Git interface as I did so, to try to develop useful workflows. The nice thing about this it that it will not only serve as the foundation for my presentation (PHEW! Half the work done already!), but it also serves as a design specification.
- Requiring Reworked Sqitch Changes
https://justatheory.com/2013/07/sqitch-requiring-reworked-changes
I recently discovered a mildly annoying bug in Sqitch, the Git-inspired database schema change management app I’ve been working on for the past year. One of its key features is the ability to “rework” changes. For example, if you have a change that defines a function change_password(), and discover sometime after release that it has a bug (maybe the hashing algorithm is too weak), you can “rework” it – essentially modify it in place – and save some headaches. Check out the “In Place Changes” section of the (PostgreSQL, SQLite, Oracle, or MySQL (coming soon) tutorials for detailed examples of how it works.
- Sqitch v1.0.0
https://justatheory.com/2019/06/sqitch-v1.0.0
After seven years of development and production database deployments, I finally put in the effort to release v1.0.0.
- Agile Database Development Tutorial
https://justatheory.com/2013/06/agile-db-dev
- Sqitch on Target
https://justatheory.com/2014/01/sqitch-on-target
- Sqitch: Now with SQLite Support
https://justatheory.com/2013/04/sqitch-sqlite
- Sqitch Update: Almost Usable
https://justatheory.com/2012/07/sqitch-almost-usable
- Sqitch Update: All Your Rebase Are...Never Mind
https://justatheory.com/2012/12/sqitch-rebase
- Sqitch 1.5.0
https://justatheory.com/2025/01/sqitch-1.5.0
Sqitch v1.5.0: out now in all the usual places!
- Sqitch 1.6.0: Now with ClickHouse!
https://justatheory.com/2025/10/sqitch-1.6.0
Sqitch 1.6.0, out today, adds support for managing ClickHouse databases.
- Sqitch v0.80: Now With More You
https://justatheory.com/2012/08/sqitch-more-you
- Flaked, Brewed, and Docked
https://justatheory.com/2018/10/flaked-brewed-and-docked
Sqitch v0.9998: Now with Snowflake support, an improved Homebrew tap, and the quickest way to get started: the new Docker image.
- Sqitch: Rename Step Objects and the SQL Directory?
https://justatheory.com/2012/06/sqitch-steps-to-change
After all of the thinking and rethinking about how to manage a Sqitch plan, I am just about done with all the changes to make it all work. One of the changes I’ve made is that tags are no longer objects that stand on their own between change steps, but are simply names the refer to specific change steps. Not only is this much more like how a VCS thinks of tags (basically another name for a single commit), but it also greatly simplifies the code for iterating over a plan and updating metadata in the database.
- Use of DBI in Sqitch
https://justatheory.com/2012/05/dbi-in-sqitch
Sqitch uses the native database client applications (psql, sqlite3, mysql, etc.). So for tracking metadata about the state of deployments, I have been trying to stick to using them. I’m first targeting PostgreSQL, and as a result need to open a connection to psql, start a transaction, and be able to read and write stuff to it as migrations go along. The IPC is a huge PITA. Furthermore, getting things properly quoted is also pretty annoying — and it will be worse for SQLite and MySQL, I expect (psql’s --set support is pretty slick).
- Notes on Upcoming Sqitch Improvements
https://justatheory.com/2013/07/upcoming-sqitch-improvements
- Removing Sqitch Deprecations
https://justatheory.com/2018/12/removing-sqitch-deprecations
A list of deprecated Sqitch features and code paths I propose to remove ahead of the release of v1.0.
- Sqitch: Trust, But Verify
https://justatheory.com/2013/01/sqitch-trust-but-verify
- Sqitch Homebrew Tap
https://justatheory.com/2013/02/sqitch-homebrew-tap
If Sqitch is to succeed, it needs to get into the hands of as many people as possible. That means making it easy to install for people who are not Perl hackers and don’t want to deal with CPAN. The Sqitch Homebrew Tap is my first public stab at that. It provides a series of “Formulas” for Homebrew users to easily download, build, and install Sqitch and all of its dependencies.
- Sqitchers
https://justatheory.com/2018/05/sqitchers
The time has come for Sqitch to leave the nest and go out on its own.
- Sqitch on Windows (and Linux, Solaris, and OS X)
https://justatheory.com/2013/02/sqitch-on-windows
- Should URI::mysql Switch to DBD::MariaDB?
https://justatheory.com/2025/01/uri-mysql-mariadb
Should Sqitch and URI::mysql use DBD::MariaDB instead of DBD::mysql? If so, what are the implications for Sqitch deployment and usage?