Changes for version 1.5.0 - 2025-01-08
- Fix improperly nested Pod headers that were incrementing two levels relative to their parent headers, which messed with the HTML output on sqitch.org.
- Banned "[" and "]" in names (changes, tags, projects) because they muck with dependency parsing of the plan file. Thanks to Žiga Leber for the bug report (#829).
- Updated the IPC methods that interact with engine clients to raise exception objects rather than strings, for more consistent error handling throughout.
- Removed duplicate DBI error handling code from engines and tests.
- Fixed an order of operation issue that prevented Sqitch from detecting Yugabyte before attempting to create an advisory lock, which resulted in an error for more recent Yugabyte releases. Thanks to Stefano Ricciardi for the report (#841).
- Removed a wayward mention of the long-deprecated `SQITCH_URI` environment variable from the Oracle tutorial. Thanks to Austin Hanson for the report (#845).
- Improved unexpected error output by including any previous exception.
- Changed the "unknown engine" error to a runtime error, rather than development time, with a localized error message. The error loading the engine package and the stack trace remain available by using triple verbosity (`-vvv`). Thanks to Martin Fischer for the report (#838).
- Changed the default error code from Oracle `sqlplus` from `SQL.SQLCODE` to `4`, because otherwise the exit code is returned `modulo 256`, meaning it can end up `0` for success for an SQL error code like `ORA-01792`. Selected `4` as the replacement to match the behavior of Exasol and because `FAILURE` maps to exit code `1`, which has in the past been more akin to a warning. Thanks to @vectro for the report (#831).
- Added checks for the existence of deploy and revert files when deploying and reverting. Previously Sqitch deferred such errors to the CLIs, but they're never called when using `--log-only`. Thanks to @vectro and Erik Wienhold for the suggestion (#828).
- Fixed a bug where the MySQL engine failed to properly handle target URIs with no database name. Thanks to Felix Zedén Yverås for the report (#821).
- Updated the MySQL engine to omit the `checkit()` function when using binary logging and Sqitch lacks super user permissions. Thanks to Scott Edwards for the report and to Janosch Peters for the solution (#824).
- Taught the Snowflake engine to detect when the Sqitch user lacks permission to create a schema and to skip the creation of the registry schema. Useful for cases when the registry schema was created in advance. Thanks to Peter Wimsey for the suggestion (#826).
- Switched the MySQL engine from DBD::mysql to DBD::MariaDB for better compatibility with older versions of the MySQL client library and for its Unicode improvements. Thanks to Mark Tyrrell for the report and @tiberiusferreira and Perl Monks `1nickt` and`InfiniteSilence` for the feedback (#825).
Documentation
Sqitch add usage statement
Add a database change to plans
Guide to using database authentication credentials with Sqitch
Sqitch bundle usage statement
Bundle a Sqitch project for distribution
Sqitch check usage statement
Checks for divergences between planned and deployed changes.
Sqitch checkout usage statement
Revert, checkout another VCS branch, and re-deploy changes
Sqitch config usage statement
Get and set local, user, or system Sqitch options
Hierarchical engine and target configuration
Sqitch deploy usage statement
Deploy changes to a database
Sqitch engine usage statement
Manage database engine configuration
Environment variables recognized by Sqitch
Sqitch help usage statement
Display help for Sqitch and Sqitch commands
Sqitch init usage statement
Create a new Sqitch project
Sqitch log usage statement
Show Sqitch change deployment logs
Guide to using database passwords with Sqitch
Sqitch plan usage statement
Show planned database changes
Sqitch rebase usage statement
Revert and redeploy database changes
Sqitch revert usage statement
Revert changes to a database
Sqitch rework usage statement
Rework a database change
Sqitch show usage statement
Show object information or script contents
Sqitch status usage statement
Show the current deployment status of a database
Sqitch tag usage statement
Create or list tag objects
Sqitch target usage statement
Manage target database configuration
Sqitch upgrade usage statement
Upgrade the registry to the current version
Sqitch verify usage statement
Verify deployed database changes
Sensible database change management
Specifying changes for Sqitch
List of common sqitch commands
List of common Sqitch guides
A tutorial introduction to Sqitch change management on Exasol
A tutorial introduction to Sqitch change management on Firebird
A tutorial introduction to Sqitch change management on MySQL
A tutorial introduction to Sqitch change management on Oracle
A tutorial introduction to Sqitch change management on Snowflake
A tutorial introduction to Sqitch change management on SQLite
A tutorial introduction to Sqitch change management on Vertica
A tutorial introduction to Sqitch change management on PostgreSQL
Sqitch usage statement
Modules
Sensible database change management
Sqitch Command support
Add a new change to Sqitch plans
Bundle Sqitch changes for distribution
Runs various checks and prints a report
Revert, change checkout a VCS branch, and redeploy
Get and set local, user, or system Sqitch options
Deploy Sqitch changes to a database
Add, modify, or list Sqitch database engines
Display help information about Sqitch
Initialize a Sqitch project
Show a database event log
List the changes in the plan
Revert and redeploy Sqitch changes
Revert Sqitch changes from a database
Rework a Sqitch change
Show Sqitch changes to a database
Display status information about Sqitch
Add or list tags in Sqitch plans
Add, modify, or list Sqitch target databases
Upgrade the Sqitch registry
Verify deployed Sqitch changes
Sqitch configuration management
Sqitch DateTime object
Sqitch Deployment Engine
Sqitch CockroachDB Engine
Sqitch Exasol Engine
Sqitch Firebird Engine
Sqitch MySQL Engine
Sqitch Oracle Engine
Sqitch PostgreSQL Engine
Sqitch Snowflake Engine
Sqitch SQLite Engine
Sqitch Vertica Engine
Format events and changes for command output
Sqitch Deployment Plan
Sqitch deployment plan blank line
Sqitch deployment plan tag
Sqitch deployment plan change list
Sqitch dependency specification
Sqitch deployment plan line
Sqitch deployment plan line list
Sqitch deployment plan blank line
Sqitch deployment plan tag
A command that connects to a target
A command that needs to know where things are
An engine based on the DBI
A command that reverts and deploys
A command that handles target-related configuration
Sqitch deployment target
Definition of attribute data types
Sqitch Exception class