github skeema/skeema v1.11.0

latest releases: v1.11.2, v1.11.1
7 months ago

See the Skeema v1.11 release announcement blog post for a summary of the most important changes in this release.

  • Spatial indexes and SRID column attributes are now fully supported for diff operations. (#97, 77ab3de, 5e357db)
  • MySQL 8.1 is now supported. (23520ea, f4e480f)
  • MariaDB 11.1 is now supported. (865aa62)
  • Premium edition improvement for triggers: whenever skeema push needs to perform multiple trigger manipulations in the same schema, the corresponding parent tables are now briefly write-locked, to prevent data inconsistencies from writes which occur in the middle of the push operation.
    • Even though MySQL lacks CREATE OR REPLACE syntax to atomically modify a trigger, this improvement now makes it safe to modify existing triggers, so allow-unsafe is no longer necessary in this situation.
  • The workspace=docker option now shells out to an external Docker CLI binary, instead of bundling a Golang Docker client library inside of Skeema. This change reduces the size of the skeema binary by 25-40%, and avoids spurious false-positive security warnings related to dependencies of the Docker client library. (#186, 2a2d8e3, 233c73e)
  • New option lax-column-order provides a way to ignore differences in column ordering in skeema diff and skeema push. (#178, c6de431)
  • New option lax-comments provides a way to ignore COMMENT clause differences in skeema diff and skeema push. (76a7323)
  • When skeema diff or skeema push detects multiple unsafe changes, all such unsafe changes are now logged, instead of just the first one. Additionally, linting still occurs if unsafe changes are present, allowing the user to see all problematic unsafe statements and linter violations at the same time. (01a93d5)
  • Several additional column modification edge cases are now considered unsafe by skeema diff and skeema push. (905ee14)
    • Changing the collation of a column that appears in a uniqueness constraint
    • Adding, removing, or changing the SRID of a spatial column in MySQL 8+
    • Converting the column type between TIME and TIMESTAMP
  • Several small improvements when modifying existing routines when using skeema diff or skeema push
    • Changes to the parameters or return type of a routine are now considered unsafe, requiring allow-unsafe to proceed even in MariaDB (where atomic CREATE OR REPLACE syntax normally makes other types of routine modifications safe). (a3ecc18)
    • When modifying a routine's characteristics (COMMENT clause, SECURITY characteristic, SQL DATA characteristic) and no other properties of the routine, Skeema now emits ALTER PROCEDURE / ALTER FUNCTION, which is safe and atomic even in MySQL. (6fab6d8)
    • In the output for skeema diff and skeema push, if the last statement for a schema required use of a nonstandard DELIMITER, the output will now also include a DELIMITER ; line before moving on to the next schema. This is beneficial for users who pipe skeema diff STDOUT to another program and then add additional SQL statements afterwards. (605b735)
  • Linter annotation messages now backtick-wrap the name of the problematic table, routine, view, or trigger. (2dd1fb6)
  • Premium edition improvement for Windows build: when Skeema needs to invoke external commands with PowerShell, its -EncodedCommand option is now used in order to prevent problems with tricky nested escaping of quoted parameters.
  • Premium edition Aurora bug fix: the latest release of Aurora for MySQL 5.7 (Aurora v2.12.0, from 2023-07-25) was not properly detected as flavor=aurora. This version of Aurora self-reports its MySQL server version as 5.7.40, whereas all previous Aurora v2 versions reported it as MySQL 5.7.12. Skeema's Aurora detection logic has now been adjusted to allow for dynamic 5.7 versions, similar to how the logic for Aurora v3 (MySQL 8.0.x) already worked.
  • Premium edition bug fix: when using Skeema Premium's ssh tunnel functionality on a server with an IPv6 address, if the SSH configuration specifies StrictHostKeyChecking=no or StrictHostKeyChecking=ask, Skeema could previously write the knownhosts entry incorrectly, in part due to an upstream Golang bug. Workarounds are now in place, thanks to community contributions to our open source knownhosts wrapper package. (skeema/knownhosts#2, skeema/knownhosts#4)

Upgrade notice for users of Skeema's workspace=docker option:

  • Skeema v1.11+ no longer bundles a built-in Docker client. A docker command-line client binary must be available in your $PATH to use workspace=docker. If you use this setting while also running skeema inside of a container, you must ensure that skeema's container has a working docker binary prior to upgrading. See #186 for more information.

An installation guide and full documentation are available on our website skeema.io.

Don't miss a new skeema release

NewReleases is sending notifications on new releases.