Changelog & Version History
Relevant source files
The following files were used as context for generating this wiki page:
The Changelog & Version History of SeaSchema documents the evolution of the library as a SQL schema definition and discovery tool for MySQL, Postgres, and SQLite. It tracks significant milestones, including major architectural shifts (such as the introduction of SchemaProbe), dependency upgrades for the SeaQL ecosystem (like sea-query), and the implementation of database-specific features like PostgreSQL vector extensions or SQLite schema discovery.
Sources: README.md:1-12, CHANGELOG.md:1-8
Project Versioning Policy
SeaSchema adheres to Semantic Versioning and follows the Keep a Changelog format. Versioning is applied across the main crate (sea-schema), the derive macros (sea-schema-derive), and the synchronization utilities (sea-schema-sync).
Core Component Versions
As of the latest documentation, the primary components are at the following versions:
| Component | Version | Rust Edition |
|---|---|---|
sea-schema | 0.18.0 | 2024 |
sea-schema-sync | 0.18.0 | 2024 |
sea-schema-derive | 0.3.0 | 2024 |
Sources: Cargo.toml:13-16, sea-schema-sync/Cargo.toml:14-17, sea-schema-derive/Cargo.toml:2-5, CHANGELOG.md:1-10
Version Evolution & Significant Changes
The project has transitioned through several major functional phases, documented in the chronological logs.
Version 0.17.x - 0.18.0 (Modern Era)
This period focused on upgrading to the Rust Edition 2024 and integrating with sea-query 1.0. Significant database improvements were made:
- Postgres: Support for partial indexes and schema-specific enum/foreign key discovery.
- SQLite: Reworking of index returns and integer writing as
BigInteger. - MySQL: Fixes for MariaDB discovery and enhanced column default parsing.
Sources: CHANGELOG.md:12-25, Cargo.toml:16
Version 0.15.0 - 0.16.x (Feature Expansion)
The release of 0.15.0 introduced breaking changes to the SchemaProbe trait, converting several methods to take &self references. It also added non-TLS runtime support. Version 0.16.x introduced specialized types, specifically postgres-vector and MySQL IndexType::Vector (under the planetscale feature).
Sources: CHANGELOG.md:33-58, CHANGELOG.md:63-71
Version 0.8.0 - 0.14.x (Architectural Refinement)
Version 0.8.0 was a pivotal update that dropped the migration module entirely and introduced the SchemaProbe system. Subsequent versions (0.12.0) converted ColumnDefault from a struct to an enum and updated the API to return Result types instead of panicking.
Sources: CHANGELOG.md:113-125, CHANGELOG.md:162-163
Version Parsing Logic
SeaSchema includes internal logic to parse and represent database system versions, particularly for MySQL and MariaDB, to ensure compatibility with version-specific features (like system-versioned tables in MariaDB).
System Information Structure
The SystemInfo structure represents the database engine's version and identity.
The version number is calculated as: major_version * 10000 + minor_version * 100 + sub_version.
Sources: src/mysql/def/system.rs:5-15
Parsing Flow
The system parses database version strings (e.g., "10.2.31-MariaDB-debug") into the SystemInfo structure.
Sources: src/mysql/parser/system.rs:13-39
Maintenance & History Summary
- Initial Release: Version 0.1.0 on 2021-04-08.
- Discovery Milestone: SQLite schema discovery was added in 0.4.0 (2021-12-25).
- Ecosystem Alignment: Regular updates are performed to keep parity with
sqlx(currently 0.8.4) andsea-query.
Sources: CHANGELOG.md:209-220, CHANGELOG.md:281, Cargo.toml:34
The version history demonstrates a consistent move toward better type safety, broader database feature support (Vector, JSONB, Enums), and stricter adherence to modern Rust idioms (Edition 2024).
Sources: CHANGELOG.md:12-14, CHANGELOG.md:155-156