Skip to content

Releases: sqitchers/sqitch

Release v1.5.2

29 Apr 15:32
v1.5.2
e1dabb8
Compare
Choose a tag to compare

Changes for v1.5.2

  • Added missing German translations, thanks to @0xflotus for the PR (#873)!
  • Fixed bug where the location of reworked script files did not respect the deploy_dir, revert_dir, or verify_dir options. Thanks to Neil Freeman for the report (#875)!
  • Updated the MySQL engine's installation of the checkit() function so that it no longer depends on permission-checking, since the current user may not have such permission. It instead attempts to create the function and ignores a failure due to a lack of permission. Thanks to Alastair Douglas for the report and solution (#874)!
  • Added missing CockroachDB templates. Thanks to @Peterbyte for the report (#878)!
  • Removed support for the SNOWSQL_PORT environment variable, which has long been deprecated by Snowflake and likely never did anything.
  • Fixed the quoting of the role and schema names on connecting to Snowflake, which was silently failing and thus not properly using the registry schema, which lead to a failure to find the registry. Broken in v1.5.1.
  • Added redaction of passwords from Snowflake URL query parameters in the display URL. Any query parameter matching pwd will now appear as "REDACTED".
  • Expanded the documentation of Snowflake key pair authentication in sqitch-authentication.pod to recommend setting sensitive ODBC parameters in an odbc.ini file rather than connection URL query parameters.
  • Switched to key pair authentication in the Snowflake CI workflows.
  • Fixed another test failure with some Firebird configurations and improved diagnostic output when an engine cannot be integration-tested.

Release v1.5.1

16 Mar 17:07
v1.5.1
c282066
Compare
Choose a tag to compare

Changes for v1.5.1

  • Fixed a bug introduced in v1.5.0 where the MySQL engine connected to the target database instead of the registry database. Thanks to @tiberiusferreira for the report (#862)!
  • Fixed test failures with some Exasol and Firebird configurations. Thanks to Slaven Rezić for the report (#858)!

Release v1.5.0

08 Jan 03:26
v1.5.0
b434380
Compare
Choose a tag to compare

Changes for v1.5.0

  • 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 andInfiniteSilence for the feedback (#825).

Release v1.4.1

04 Feb 16:43
v1.4.1
fa31539
Compare
Choose a tag to compare

Changes for v1.4.1

  • Removed the quoting of the role and warehouse identifiers that was added to the Snowflake engine in v1.4.0. Turns out Snowflake allows a warehouse to be specified in a different database, in which case dots are valid in the name and should not be quoted! So users must properly quote when necessary, but added notes to sqitchtutorial-snowflake.pod on the need to use URI escapes for special characters. Thanks to Patrick Sabo for the find, and to @marc-marketparts for validating that URI encoding works.
  • Added notes on URL encoding database URLs to sqitch-target.pod, the main reference for database URLs in the Sqitch documentation.
  • Fixed the output of the list of changes to be deployed or reverted to actually require --verbose twice, as described in the v1.4.0 changes, and not just once. Thanks to Erik Wienhold for the PR (#785)!
  • Removed the duplicate change name from the output of the list of changes to be deployed or reverted with -VV. Thanks to Erik Wienhold for the PR (#787)!
  • Fixed invalid template resolution when adding a singe change to multiple engines at once. Thanks to Christian Riedel for the detailed bug report (#795)!
  • Fixed Oracle and Firebird test failures due to incorrect use of chmod. Thanks to Slaven Rezić for the report and the fix (#807)!
  • Tests now require Test::Warn 0.31 or later, as newline handling issues cause test failures in earlier versions. Thanks to Slaven Rezić for the test reports and for identifying the issue.
  • Updated the locale configuration to fix issues in more recent versions of Perl, and added tests to ensure that the sqitch CLI executes and properly emits localized messages (except on Windows, where the language codes are incompatible).
  • Fixed an issue where the MySQL engine failed to recognize the MariaDB mysql client installed by Homebrew on macOS. Thanks to Carlos Ramos for the bug report and PR (#791)!

Release v1.4.0

01 Aug 23:37
v1.4.0
30e29f5
Compare
Choose a tag to compare

Changes for v1.4.0

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

Release v1.3.1

01 Oct 19:07
v1.3.1
ff9aede
Compare
Choose a tag to compare

Changes for v1.3.1

  • Fixed a bug introduced in v1.3.0 where the Postgres engine would always pass the port to psql, thus ignoring the PGPORT environment variable. Thanks to Cam Feenstra for the spot (#675)!
  • Fixed test failures on OSes where the local time zone cannot be determined. Thanks to Slaven Rezić for the test reports, and to Dave Rolsky for the solution (#672).
  • Updated the MySQL deploy/revert lock to be specific to the target database. This allows multiple instances of Sqitch to run at the same time on the same server as long as they're connecting to different databases. Thanks to Dmytro Kh for the report and discussion of the options (#670).
  • Fixed test failures where DBD::Mem was not installed. Likely only occurred on some CPAN Testers nodes. Thanks to Slaven Rezić for those (#673).
  • Banned the backslash character (\) in change and tag names. It would be ignored on Unix-style systems, but create unexpected subdirectories on Windows systems.
  • Banned the slash character (/) in tag names. They're still allowed in change names to enable script organization, but can wreak havoc when used in tag names. Thanks to @ewie for the report (#680)!

Release v1.3.0

12 Aug 22:07
v1.3.0
caaa1ef
Compare
Choose a tag to compare

Changes for v1.3.0

  • Fixed an issue when testing Firebird on a host with Firebird installed but no isql, and when using a local Firebird (e.g., the Engine12 provider), which allows only one connection at a time. Thanks to Slaven Rezić for the the reproducible configuration (#597).
  • Tweaked the Postgres engine to support Yugabyte. The only unsupported features are explicit locks, so users need to manually ensure that only one instance of Sqitch is updating the cluster at a time.
  • Added support for CockroachDB. Almost exactly the same as for Postgres, so the new App::Sqitch::Engine::cockroach class extends App::Sqitch::Engine::pg to make a few changes. The SQL files with the registry DDL varies in a few ways, so they're separate.
  • Now require URI::db v0.20 for Cockroach and Yugabyte URI support.
  • Dropped support for MySQL 5.0.
  • Added explicit sorting for aggregated lists (such as the tags associated with a commit) to the MySQL, Exasol, Snowflake, and Postgres (8.4 and higher) engines.
  • Fixed slow deploys on MariaDB thanks to fractional timestamp support added in 5.03.05. Thanks to @rbrigot for the PR (#658)!
  • Fixed a bug where destination locking failed on the first deploy to MySQL. Bug introduced along with destination locking in v1.2.0. Thanks Tom Bloor the report and to Alberto Simões for the help replicating the issue (#601).
  • Removed the sqitch engine update-config action, originally added for compatibility reasons in 2014, and the prompt to use it was removed as of 0.9999 in 2019.
  • Fixed a warning when searching for the Firebird client on Windows.

Sqitch v1.2.1

05 Dec 20:36
v1.2.1
cc5f938
Compare
Choose a tag to compare

Changes for v1.2.1

  • Updated all the live engine tests, aside from Oracle, to test with unique registry names, so as to avoid conflicts when multiple instances are being tested at once. Thanks to Slaven Rezić for the report (#597).
  • Removed local directory from the distribution, accidentally included in v1.2.0. Thanks to gregor herrmann for the report (#600).

Release v1.2.0

20 Nov 23:21
v1.2.0
5bda2f7
Compare
Choose a tag to compare

Changes for v1.2.0

  • Fixed partitioned search for deployed changes on Oracle and Exasol to correctly support plans with more than 250 changes. Thanks to @Nicqu for the report (#521).
  • DBI connections to the registry will now be set to trace level one when a verbosity level of three or higher is passed to Sqitch (i.e., sqitch -vvv). Thanks to @wkoszek for the suggestion (#155).
  • Renamed the "master" branch to "main" and updated all relevant references.
  • Fixed the parsing of the Snowflake account name from the target URL to that it no longer strips out the region and cloud platform parts. Also deprecated the use of the region, host, and port config and environment variables. This is to comply with the new account name format. Thanks to @ldsingh00 for the report (#544).
  • The checkout command will now show a usage statement when no branch name is passed to it, rather than a series of warnings and a Git error. Thanks to François Beausoleil for the report (#561).
  • The checkout command now works when operating on a Sqitch project in a subdirectory of a Git project. Thanks to François Beausoleil for the report and suggested fix (#560).
  • Fixed a failing bundle test when a top directory was configured in the user or system configuration. Thanks to @CodingMinds for the spot (#587).
  • Added support to the Exasol engine for the AUTHMETHOD query parameter (to allow Open ID authentication) and the SSLCERTIFICATE=SSL_VERIFY_NONE query parameter to disable SSL verification. Thanks to Torsten Glunde for the report (#588).
  • Fixed "Use of uninitialized value $engine in concatenation" error when Sqitch is unable to determine the engine when writing a plan file. Only happens in the rare case that the core.engine value is not set.
  • Improved the error message when attempting to update a plan file and no project pragma is present. Thanks to Laurentiu Diaconu for the report (#577).
  • Fixed the error message when attempting to deploy a change that has already been deployed to display the name of the change, rather than a memory address. Thanks to Neil Mayhew for the report (#579).
  • Added destination locking, currently implemented for PostgresQL and MySQL. On starting a deploy or revert, Sqitch attempts to "lock the destination" using advisory locks, to ensure that only one instance of Sqitch makes changes to the database at any one time. This complements the existing locking, which applies as each change is deployed or reverted, as that pattern led to failures when multiple instances of Sqitch were working at once. Thanks to Neil Mayhew for the report (#579).
  • Added the --lock-timeout option to the deploy, revert, rebase, and checkout commands, to allow for shorter or longer times to wait for an exclusive target database advisory lock for engines that support it. Defaults to 60 seconds.
  • Fixed the behavior of the plan command's --max-count option when used with --reverse to show the proper items. Thanks to Adrian Klaver for the report (#517).
  • Fixed an issue that could cause bugs with the check command on Firebird, Exasol, Oracle, and Vertica. Broken since the check command was added in v1.1.0.

Sqitch v1.1.0

17 May 16:29
v1.1.0
45520b8
Compare
Choose a tag to compare

Changes since v1.0.0

  • Fixed Perl Pod errors, thanks to a pull request from Mohammad S Anwar (#470).
  • Fixed test failures when running with the localization set to German or Italian. Thanks to Slaven Rezić for the report (#472).
  • Fixed an issue when the full name of the current user is not set, so that it properly falls back on the username. Thanks to Slaven Rezić and Matthieu Foucault for the report and testing various fixes (#473).
  • Eliminated an error when using the -t option to specify a target, due to a missing dependency declaration in the Target class. Thanks to Clinton Adams for the fix (#509)!
  • Updated the IPC::System::Simple Win32 workaround added in 0.9999 to properly support released versions of IPC::System::Simple. This fixes errors running the database command-line clients on Windows (#503).
  • Sqitch now only passes the --password option to the MySQL client if it was not read from the .my.cnf file, as it's more secure to let the client use .my.cnf, and it eliminates a warning from recent versions of the client. Thanks to Kiel R Stirling for the fix (#484)!
  • Added a note to the tutorials to skip setting the engine.$engine.client config when using the Docker image.
  • Added the new check command, which compares the SHA1 hashes of the deploy scripts to the database, and reports if any have been modified since they were deployed. Thanks to Matthieu Foucault for the pull
    request and diligent work on this feature (#477)!
  • Added the --modified option to the rebase and revert commands, to revert to the earliest change with a modified deploy script. Handy for rapid rebasing during iterative development cycles. Thanks to Matthieu
    Foucault for this feature (#477)!
  • Fixed an issue where the Snowflake engine would complain about not finding the account name even for commands that don't need them, such as init. Thanks to Stack Overflow user vbp13 for the report (#502).