Changes for version 1.4.0 - 2023-08-01

  • 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::Oracle 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)!

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