Releases: skeema/skeema
Releases · skeema/skeema
v1.5.2
- MariaDB 10.6 is now supported (b4c58d0)
- IGNORED indexes can be introspected and diff'ed (functionally similar to MySQL 8 INVISIBLE indexes)
- "utf8mb3" is now used in place of "utf8" in this flavor; both forms work for the allow-charset option
- New linter rule lint-has-enum may be used to flag any ENUM or SET columns in environments where these column types are discouraged or forbidden. (#164, b538432)
- The lint-pk linter rule now provides more explanatory text when a table has no PK, no non-NULL unique keys, but one or more nullable unique keys, which cannot be used as an implicit PK. (2814062)
- Premium CLI bug fix: if the one-time
skeema pullupgrade step hasn't been run yet, a panic would occur when runningskeema pushagainst a database schema that doesn't exist yet, due to some view and trigger safety logic that lacked a nil guard. Now fixed. - Check constraints in MariaDB bug fix: if a check clause exceeded 64 characters, MariaDB releases prior to February 2021 would truncate the clause in information_schema. This in turn caused Skeema to see a partial clause, which resulted in the table being considered unsupported for diff operations. A workaround has been implemented in Skeema to parse the clause from SHOW CREATE TABLE automatically when needed. (#165, af5adc3)
v1.5.1
- MySQL 8.0.24: Fix diff support for tables with utf8mb3 default character set. (131f495)
- When using the lint-charset option, an allow-charset value of "utf8mb3" now properly works as an alias for "utf8". (365b568)
- workspace=docker now handles situations where a newly-created or restarted container's port mapping wasn't available yet at inspection time, via automatic retries. This fixes a previously-rare condition that was observed more frequently with MySQL 8.0.24 images. (03ef1e8)
- workspace=temp-schema locking impact has been reduced for systems with many partitioned tables. (964a969)
skeema pullandskeema formatnow handle more edge-cases around adding DELIMITER commands to existing procs/funcs when needed. (9585907)- Skeema's statement lexer/parser now permits all unicode whitespace. Some types of whitespace are not permitted by MySQL itself, but this change allows for clearer MySQL-generated error messages in cases of accidental use of nonbreakable space or ideographic space, rather than a vague cannot-parse warning from Skeema. (7659d9b)
v1.5.0
- Tables with check constraints are now supported for diff operations (#86, 9eb10ec)
- Skeema no longer defaults to forcing a strict sql_mode or innodb_strict_mode (540de97)
- Skeema's sessions will now use whatever the server global values are set to, minus any rare problematic sql_modes (e.g. ANSI_QUOTES)
- Users can still optionally override this using connect-options if desired
- New linter option lint-zero-date has been added to help catch the most common strict-mode violation relevant to schema management
- Several connection management improvements (00510a8)
- Skeema now auto-detects when the database has been configured to use a relatively low value for max_user_connections or max_connections, and throttles down concurrency accordingly (#157)
- The number of network round-trips per new connection has been reduced, improving performance on a WAN or VPN
- Connection pools are closed more quickly, preventing concurrent sleeping connections during some phases of Skeema's execution
- Several schema introspection changes and performance improvements
- Tables with invisible columns are now supported for diff operations in MySQL 8, in addition to the previous MariaDB support (151bdd3)
skeema initandskeema pullnow record the current version of Skeema in the new generator option, for use in future backwards-compatibility logic (1db5e93)- workspace=temp-schema: during cleanup, execute DROP TABLEs sequentially (no concurrency) if buffer pool is large and version is pre-8.0.23 (b608688)
- workspace=docker: disable TLS for communication with local Dockerized instance for minor performance increase (0b35439)
- Bug fix: handle lingering int display widths from pre-8.0.19 releases of MySQL 8 that were later upgraded to 8.0.19+ (#158, d578215)
- Bug fix: routine bodies with particular comment format caused lexer errors (#159, 28fbe7a)
- Bug fix: diff support for edge cases of MySQL 8 column default expressions (9e2f21c)
v1.4.7
- Bug fix: The duplicate index linter rule no longer erroneously flags UNIQUE keys that are a prefix subset of a larger UNIQUE key, as these may intentionally exist due to representing a different uniqueness constraint. (#152, 6493b28)
- Bug fix: Since InnoDB does not permit adding multiple FULLTEXT keys in a single ALTER TABLE statement by default,
skeema diffandskeema pushwill now generate multiple ALTER TABLE statements in this situation. (#150, 4696caa) - Logging in
skeema diffandskeema pushhas been clarified and made more consistent in some error/warning conditions. (97e914c) - When a .skeema file is rewritten by
skeema pullorskeema add-environment, boolean option values are now written in a clearer format. (c41c437)
v1.4.6
- Bug fix: The
skeema lintandskeema formatcommands no longer panic if no host is defined for the current dir's configuration. (#141, #142, 2b64cea) - Help text: several documentation improvements have been added to the
--helptext, including grouping options by category for better readability, as well as linking to Skeema's new online command reference. (d6662fa, 6393249) - Developer internals: The "master" branch, deprecated since Skeema v1.4.4, has now been dropped to avoid confusion. The default branch for this project is "main". Additionally, compiling Skeema from source now requires Golang v1.14+. Skeema tracks Golang's official policy of supporting the two most recent Go releases. (b578d01)
v1.4.5
- Compression linter: New linter rule lint-compression checks the compression settings of InnoDB tables, ensuring that each table's compression setting is found in companion list option allow-compression. These options can be used to restrict which types/sizes of compression are permitted, or require all tables to be compressed, or require that no tables are compressed. Thank you to Etsy for generously sponsoring the development of this feature! (1ed3163)
- MariaDB 10.5 is now fully supported in Skeema. This includes proper handling of the new
inet6column type (which can be safely converted to/frombinary(16)), and detection of the newBINLOG ADMINprivilege (which affects temp-schema-binlog=auto). (a4cceec) - Tables using column compression in MariaDB 10.3+ are now fully supported for diff operations. (b393191)
v1.4.4
- Bug fix: unexpected fatal errors when using non-root users with certain privilege combinations (5eeb835)
- Allow (and prefer) use of SSL/TLS for encrypted database connections by default, if server supports them (8c83c18)
- Improve support/detection of schema names used in *.sql files, such as
USEstatements orCREATE dbname.tablenamestatements (921084c, dfb65d9, c6bfb73, 76edc20) skeema pull: minor changes to error handling and logging, to be more likeskeema format(618c2ef)- Skeema's test suite and release pipeline are now run via GitHub Actions instead of Travis CI. Additionally, this repo's default branch has been renamed main.
v1.4.3
- New partitioning-related options for
skeema init,skeema pull,skeema format, andskeema lint(4f90ec4) - Diff support for WITH PARSER clause of FULLTEXT index, allowing use of alternative parsers (e8b3ad4)
- The
ngramparser is now supported on Skeema.io CI for MySQL 5.7+ and Percona Server 5.7+, as this parser is preinstalled in these database versions.
- The
- Improve safety check that prevents inadvertent manipulation of system schemas (0ca6b8f)
v1.4.2
- Diff support for tables using InnoDB transparent page compression, a feature available in MySQL 5.7+, Percona Server 5.7+, MariaDB 10.2+ (5e3a1e1)
- Diff support for tables using column compression, a feature available in Percona Server 5.6.33+ (e7ad0a3)
- Fixes for new edge cases in MySQL 8.0.19 (533d073, c7ee397)
These improvements have also been deployed to Skeema.io CI, which provides automatic linting on commits and pull requests. If you store your table definitions in a github.com private repo, try Skeema.io CI soon before the free beta period closes!
v1.4.1
This release adds diff support for tables using some relatively new MySQL and MariaDB features:
- MySQL 8 invisible indexes, including generation of
ALTER TABLE ... ALTER INDEX ... {INVISIBLE | VISIBLE}clauses to change index visibility - MySQL 8 index expressions
- MySQL 8 descending index parts
- MariaDB 10.3+ invisible columns