February 26, 2021
Skeema v1.5.0 has been released! This new version adds diff support for tables with check constraints, and also includes major enhancements to Skeema’s internal connection and query behaviors.
Check constraints
Check constraints are a relatively new feature in MySQL and MariaDB to enforce data validity. Due to some complex edge cases and differences between the check constraint implementations in MySQL and MariaDB, previous versions of Skeema could not diff tables that have check constraints. Adoption of this feature has increased in the database community over the past year, so full diff/push support has finally been implemented in Skeema v1.5!
Connection and query improvements
A number of internal refactors in v1.5 provide enhancements to performance, safety, and usability.
In order to introspect the state of a database, Skeema runs several information_schema
queries. These introspection queries are now buffered and concurrent. This greatly reduces locking impact for users with very high table or partition counts, and improves performance over slow network links (WAN or VPN).
Internal changes to Skeema’s connection pool management provide an additional performance boost, while also reducing the number of simultaneous connections required. Environments with low max_connections
or max_user_connections
restrictions are now detected automatically, and connection pool sizes are downsized accordingly.
As a safety enhancement, workspace cleanup concurrency is now automatically throttled down for users with large innodb_buffer_pool_size
, to reduce locking impact.
Strict mode changes
MySQL and MariaDB support the notion of strict mode: the use of a strict sql_mode
alongside innodb_strict_mode=1
. These strict settings are enabled by default in MySQL 5.7+ and MariaDB 10.2+, but some companies disable them for reasons of legacy application compatibility.
Previously, Skeema automatically enabled strict mode for its own sessions, regardless of the database’s version or global setting. This provided a common strict baseline for Skeema’s behavior, but sometimes caused confusion for users who deliberately can’t use strict mode. And now that MySQL 5.6 and MariaDB 10.1 have both reached end-of-life (in terms of support from their vendors), it’s safer to assume that environments with strict-mode disabled are doing so deliberately.
For these reasons, Skeema v1.5 no longer forces a strict sql_mode
, nor innodb_strict_mode
. The server global values will be used by default for Skeema’s sessions, unless overridden by connect-options.
A new linter option, lint-zero-date, has been added to aid users who wish to transition from non-strict sql_mode
to a strict one. This catches the most common strict-mode violation with respect to table definitions: the use of zero-dates as a default value for DATE, DATETIME, or TIMESTAMP columns.
Coming soon: Premium CLI
Development is progressing smoothly for the enhanced premium edition of the Skeema CLI, with a projected release date in Q2 of this year. The initial release is planned to include support for:
- Views
- Triggers
- AWS Aurora
- Windows CLI build
- Notarized MacOS build
- Linux RPM and DEB repositories, for easier automated installation
To keep up with the latest Skeema announcements, be sure to follow @skeema_io on Twitter!