The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.9998 - 2018-10-03

  • Fixed an issue where Sqitch would sometimes truncate the registry version number fetched from MySQL, most likely because the Perl runtime was using 32-bit integers. Fixed by casting the version to CHAR in the query, before Perl ever see it. Thanks to Allen Godfrey David for the report.
  • Added the Snowflake engine.
  • Now require URI::db v0.19 for Snowflake URI support.
  • The Vertica and Exasol engines now require DBD::ODBC 1.59, which fixes a Unicode issue. Thanks to Martin J. Evans for the quick fix (perl5-dbi/DBD-ODBC#8)!
  • Added the `bundle` command to `./Build`. This command installs only the runtime dependencies into the `--install_base` directory. This should simplify building distribution packages, binary installs, Docker images, and the like.
  • Added the `--with` option to `./Build`, to require that Sqitch be build with the specified engine. Pass once for each engine. See the README for the list of supported engines.
  • Added a check for Hash::Merge 0.298 during installation, since that release has a fatal bug that breaks Sqitch. If it's installed, the installer will issue a warning and added v0.299 to its list of dependencies. Thanks to Slaven Rezić for the suggestion (#377).
  • Fixed the PostgreSQL engine so it properly checks the `psql` client version to determine whether or not the `:registry` variable is supported. Previously it relied on the server version, which would fail if the server version was greater than 8.4 but the `psql` client was not. Thanks to multiple folks reporting issues with registry names and search paths (#314).
  • The plan parser will now complain if a change specifies a duplicate dependency. This should be less confusing than a database unique violation. Thanks to Eric Bréchemier for the suggestion (#344).
  • Moved the project to its own GitHub organization:
  • Fixed likely cause of Oracle buffer allocation bug when selecting timestamp strings. Thanks to @johannwilfling for the bug report and to @nmaqsudov for the analysis and solution (#316).
  • Changed the way the conninfo string is passed to `psql` to eliminate argument ordering problems on Windows. Thanks to @highlowhighlow for the report (#384).
  • Added `$SQITCH_USERNAME` environment variable to complement `$SQITCH_PASSWORD`. It can be used to override the username set in for a target.
  • Added the `$SQITCH_FULLNAME` and `$SQITCH_EMAIL` environment variables, which take precedence over the values of the `` and `` config variables.
  • Added the `$SQITCH_ORIG_SYSUSER`, `$SQITCH_ORIG_FULLNAME` and `$SQITCH_ORIG_EMAIL` environment variables. For those situations when Sqitch attempts to read OS data for user information, These new environment variables override these system-derived values. The intention is to allow an originating host to set these values on another host where Sqitch will actually execute.
  • Fixed an error triggered by whitespace trailing an engine name in the configuration. Thanks to Jeremy Simkins for the report (#400).
  • Refactored the engine-specific username and password attributes to support a consistent search for values. Sqitch searches first for one of its own environment variables (`$SQITCH_USERNAME` and `$SQITCH_PASSSWORD`), then the target URI, and finally any engine- specific values, which might include additional environment variables, configuration files, the system user, or none at all.
  • Database engines that implicitly relied on username and/or password environment variables or on the system username now explicitly rely on them. These include the Firebird, MySQL, Postgres, and Vertical engines. This change should exhibit no change in the behavior of these engines.
  • Added support for the `$MYSQL_HOST` and `$MYSQL_TCP_PORT` environment variables to the MySQL engine.
  • Documented all supported engine-specific environment variables in the sqitch-environment guide.
  • Renamed the sqitch-passwords guide to sqitch-authentication and added a section on username specification.
  • Updated all URLs to use the https scheme. Only exceptions are, which doesn't support TLS, and, which appears to be down.


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 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 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 change file 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
Sane 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


Sane database change management
Sqitch Command support
Add a new change to Sqitch plans
Bundle Sqitch changes for distribution
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 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
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