Changelog and Releases
Relevant source files
The following files were used as context for generating this wiki page:
The Changelog and Releases system in SeaQuery serves as the primary record of the evolution of the dynamic query builder. It documents the transition from Release Candidates (RC) toward stable versions, tracking new features, bug fixes, breaking changes, and internal maintenance across the main crate and its sub-crates like sea-query-derive.
This documentation ensures that developers can track shifts in SQL generation logic—such as changes in PostgreSQL type mapping or MySQL index behavior—and adapt their implementations accordingly. It also monitors the project's dependency updates, such as transitions to newer Rust editions and library bumps for rusqlite, sqlx, and time.
Sources: README.md, Cargo.toml:1-25, changelog/1.0.0-rc.34.md:1-5
Release Structure and Versioning
SeaQuery follows a semantic versioning approach, currently moving through a series of Release Candidates (RC) for version 1.0.0. The project is organized as a workspace, ensuring synchronized releases between the core library and its procedural macros.
Version Management
The core project version is defined in the workspace root, while specific features are gated behind flags to maintain a lightweight core. Recent releases have focused on stabilizing the API for the 1.0.0 milestone.
The diagram above illustrates the logical categorization of updates found in SeaQuery release notes.
Sources: Cargo.toml:1-15, changelog/1.0.0-rc.34.md:7-15, changelog/1.0.0-rc.32.md:1-5
Feature Evolution and Major Milestones
Recent releases (RC.30 through RC.34) introduced significant enhancements to the Abstract Syntax Tree (AST) and backend-specific generation.
SQL Statement Enhancements
Release 1.0.0-rc.32 introduced support for EXPLAIN statements across all three primary backends (MySQL, Postgres, SQLite), allowing developers to analyze query plans directly through the query builder API.
| Feature | Release | Description |
|---|---|---|
EXPLAIN Support | 1.0.0-rc.32 | Added ExplainStatement for Json and Query Plan formats. |
FILTER Clause | 1.0.0-rc.32 | Support for aggregate function filters in PostgreSQL. |
| Table Partitioning | 1.0.0-rc.34 | CREATE TABLE support for RANGE, LIST, and HASH partitions. |
Enum Values | 1.0.0-rc.33 | Added typed enum values with literal casting for Postgres. |
| Advisory Locks | 1.0.0-rc.33 | Added PostgreSQL advisory lock functions (PgFunc). |
Sources: changelog/1.0.0-rc.32.md:5-45, changelog/1.0.0-rc.33.md:5-25, changelog/1.0.0-rc.34.md:55-75
Breaking Changes and Refactoring
A critical part of the release process is documenting changes that affect existing SQL schemas. In RC.34, PostgreSQL unsigned integer mappings were adjusted to prevent overflow by using wider signed types.
| Column Type | Old PostgreSQL Type (RC.32) | New PostgreSQL Type (RC.34) |
|---|---|---|
SmallUnsigned | smallint | integer |
Unsigned | integer | bigint |
Sources: changelog/1.0.0-rc.34.md:17-30
Dependency and Environment Updates
The project maintains technical relevance by regularly bumping the minimum supported rust version (MSRV) and external crate versions.
Maintenance Cycles
- Rust Edition: The project transitioned to
edition = "2024"in the 1.0.0-rc cycle. - MSRV: The Rust version was bumped to
1.88.0. - Crate Bumps: Dependencies like
rusqlite(0.38.0),time(0.3.47), andjiff(0.2.15) are updated to keep pace with the Rust ecosystem.
The diagram shows the standard maintenance tasks performed during a release cycle.
Sources: Cargo.toml:13, 21-35, changelog/1.0.0-rc.32.md:65-70, changelog/1.0.0-rc.34.md:130-140
Summary
The "Changelog and Releases" documentation for SeaQuery tracks the project's trajectory toward a stable 1.0.0 release. By meticulously documenting breaking changes in backend-specific SQL generation and expanding the feature set to include complex operations like table partitioning and advisory locks, the changelogs serve as a vital resource for ensuring compatibility and performance in Rust database applications.
Sources: README.md, changelog/1.0.0-rc.34.md