Skeema v1.8.0 released

June 2, 2022

Skeema v1.8.0 is now available! This new release adds support for non-Linux database servers, SSH tunnels in the Premium CLI, and MariaDB 10.8 support.

MacOS and Windows database servers

Skeema was originally designed to operate on database servers hosted on Linux. However, it’s not uncommon to run databases natively on other operating systems, whether for local development purposes, or even for production: for example, Microsoft’s Azure Database for MySQL uses Windows servers under-the-hood.

Both Windows and MacOS use case-insensitive filesystems, unlike Linux. This adds some complexity in terms of mapping files to database objects, which MySQL and MariaDB handle with their lower_case_table_names server variable. Skeema has always supported lower_case_table_names=0 (Linux default), but previously had problems with lower_case_table_names=1 (Windows default) or lower_case_table_names=2 (MacOS default) if the names of any table, view, or database contained uppercase characters. These issues were caused by the effects of lower_case_table_names on information_schema and other metadata queried by Skeema.

Skeema v1.8 adds full support for all values of lower_case_table_names, regardless of database server operating system. Even if your server environments span multiple operating systems – such as using Linux in production alongside MacOS or Windows in development – the mapping between CREATE statements in *.sql files and database objects always works properly now. Skeema v1.8 also adds a new optional linter check, lint-name-case, if you wish to enforce an all-lowercase-names policy for tables and views.

To learn more about ensuring data and schema portability across operating systems, see our deep dive into lower_case_table_names.

SSH tunnels

The Premium CLI now provides built-in SSH tunnel functionality. The new ssh and ssh-to-db options cover a wide range of SSH use-cases: bastion security servers / jump boxes, localhost admin connections directly on database hosts, running online schema change scripts from a unified Linux server, and more.

The SSH functionality includes a wide set of features, including:

  • Supports several OpenSSH configuration options from ~/.ssh/config for authentication, hostname aliases, and more
  • Interacts with OpenSSH ssh-agent automatically, via UNIX socket (Linux and MacOS) or named pipe (Windows)
  • known_hosts management, following UserKnownHostsFile and StrictHostKeyChecking configuration from ~/.ssh/config
  • Automatic keep-alives
  • Multi-hop tunnels without need for agent forwarding
  • SSH tunnels to database hosts optionally allow use of local UNIX sockets for database connections, instead of TCP/IP
  • External scripts configured through alter-wrapper or ddl-wrapper are executed on the remote host; terminal multiplexers such as screen or tmux may be used in the wrapper command-line to protect against connectivity loss

MariaDB 10.8 support

Skeema fully supports MariaDB 10.8, which just had its first GA release on May 20. New MariaDB 10.8 features relevant to schema management include:

  • The new binlog_alter_two_phase server variable can be enabled to avoid replication lag when running an online ALTER TABLE
  • Descending indexes: individual columns in an index may have a DESC modifier, improving ORDER BY performance in some cases
  • Function parameters may now have IN, OUT, or INOUT modifiers, just like stored procedures

For more information on Skeema v1.8.0, full release notes are available on GitHub.