Skip to main content


Sensible database change management

Changes for 1.4.0 - 2023-08-01T23:37:30Z

  • Fixed Snowflake warehouse and role setup to properly quote identifiers unless they're valid unquoted identifiers or already quoted. Thanks to @marc-marketparts for the report (#685).
  • Fixed a bug reworking a change when a rework directory is configured but not created. Thanks to @jfeaver for the report (#686).
  • Output the list of changes to be deployed or reverted when `--verbose` is specified at least twice. Thanks to @vectro for the PR (#702).
  • Fixed the formatting of the log and plan commands to allow empty or `0` separators in lists of things (such as `%{0}t` for a list of tags). Thanks to @web-vertalo for the pull request (#703).
  • Updated the MySQL Tutorial to use 5.7 features. Thanks to Vlad Safronov for the PR (#705).
  • Deprecated the `no_prompt` and `no_prompt` attributes of App::Sqitch::Engine in favor of passing booleans to the `revert` and `verify` methods. The attributes still exist for reverse compatibility, but now emit warnings and will be removed in the future. Thanks to Thanks to @vectro for the PR (#704).
  • Added a warning for a double extension on the file names created by the `add` command. Thanks to @blairjordan for the PR (#724)!
  • Added the `revert.strict` boolean configuration variable which, when set to true, requires the specification of a change to revert to. It also disables the `rebase` and `checkout` commands, though the `rebase.strict` and `checkout.strict` variables, respectively, may override it. Use `revert.strict` to prevent accidental reverts in sensitive environments. Thanks to @vectro for the PR (#719; revised in #735)!
  • Fixed test failures due to a bug fix in the Perl URI module (libwww-perl/URI#13). Thanks to @bobfang for the report (#744)!
  • Fixed test failures due to a change in the generation of DBI DSN by URI:😮racle introduced by libwww-perl/URI-db#23.
  • Added a format option `%F` to `sqitch plan` that prints the path for the deploy file for each migration in the plan.
  • Changed the default location for the Oracle `sqlplus` client when the `ORACLE_HOME` environment variable is set. It now returns either `$ORACLE_HOME/bin/sqlplus` or `$ORACLE_HOME/sqlplus` if it exists and is executable (and ends in `.exe` on Windows). Otherwise it simply returns `sqlplus` as before, assuming it will be found in the path. Thanks to @vectro for the suggestion (#747).
  • Increased the required version of DBI to 1.631 or higher and removed a MySQL engine workaround for older versions.
  • Added detection of a missing registry schema on connect and conditions to avoid querying it when it does not exist. Fixes an issue where Sqitch might find a project record in the current schema instead of the expected registry schema. Thanks to @vectro for the report and investigation (#668)!
  • Fixed Snowflake and MySQL to properly raise errors on session query failures immediately after connection.
  • Fixed the handling of unique violations for deploy script hash uniqueness so that it no longer returns a database error but properly reports the issue in a more human-friendly error message. Thanks to Stefan Badenhorst for the reminder (#630).
  • Updated the registry SQL scripts for Vertica to always enable primary key and unique constraints. Unique constraints are now enabled for all database engines except Exasol and Snowflake.
  • Dropped support for Vertica 7.1, as unique constraint enforcement was not added until Vertica 7.2.
  • Increased minimum SQLite versions to 3.8.6, when unique constraint enforcement was added.
  • Removed remaining uses of the smartmatch operator, thus eliminating the Perl 5.38 warnings about its deprecation. (#769)
  • Added Cockroach to the list of valid engines recognized in command-line arguments (and a test to ensure new engines won't be omitted in the future). Thanks to @NOBLES5E for the spot (#772)!
#685 #686 #702 #703 #705 #704 #724 #719 #735 #744 #747 #668 #630 #769 #772
⇧