4.7 KiB
Release Notes: sea-query 1.0.0
(final release after the 1.0.0 release candidate series)
Highlights
- Published the stable
sea-query 1.0.0release. - Published
sea-query-derive 1.0.0. - Promoted the binder crates to final non-rc versions:
sea-query-rusqlite 0.8.0sea-query-postgres 0.6.0sea-query-diesel 0.3.0sea-query-rbatis 0.2.0
- Updated installation snippets from rc versions to the stable
1.0dependency line. - Dated and finalized the 1.0 changelog after the rc.34 release.
Release Candidate Notes
The 1.0.0 final release includes the full release candidate series:
- 1.0.0-rc.34 - Table partitioning, Jiff binder support,
JSON_TABLErefactor - 1.0.0-rc.33 -
Value::Enum, Postgres advisory locks,SelectExprTrait - 1.0.0-rc.32 -
EXPLAIN,FILTERon aggregates,ALTER TABLE DROP CONSTRAINT - 1.0.0-rc.31 -
SELECT INTO,eq_any/ne_all,Value::array_type - 1.0.0-rc.30 - Tokenizer comment parsing, dependency reductions
- 1.0.0-rc.29 - Legacy
serialoption for Postgres - 1.0.0-rc.28 - Restore Value system
- 1.0.0-rc.27 - Revert
impl Iden for String - 1.0.0-rc.26 -
From<Vec<Value>> for Array,FromIterator<T> for Array - 1.0.0-rc.24 - Array API redesign
- 1.0.0-rc.23 -
Value::Enum,ON CONFLICT ON CONSTRAINT, CTEVALUESclause - 1.0.0-rc.22 - Index operator class,
DROP COLUMN IF EXISTS, nullable values - 1.0.0-rc.20 -
ValueTupleIter, SQLite decimal fix
Major Breaking Changes
- Unified
ExprandSimpleExpr.
SimpleExpr is now an alias of Expr, so redundant .into() calls may need to be removed.
- Reworked the identifier type system.
DynIden now eagerly stores rendered identifier text as a Cow<'static, str>, and SeaRc is no longer an Rc / Arc alias.
- Reworked
TableRefandColumnRef.
The older many-variant representation was collapsed into structured TableName, SchemaName, DatabaseName, and ColumnName forms.
- Replaced Postgres
serialdefaults with identity columns.
Postgres now uses GENERATED BY DEFAULT AS IDENTITY by default. Enable option-postgres-use-serial to restore the legacy serial behavior.
- Updated PostgreSQL unsigned integer column mappings.
PostgreSQL does not have unsigned integer types. SeaQuery now maps SmallUnsigned to integer and Unsigned to bigint to avoid overflow-prone mappings.
- Removed
jiff::Zonedfrom thewith-jiffvalue API.
Supported Jiff values are jiff::civil::Date, jiff::civil::Time, jiff::civil::DateTime, and jiff::Timestamp.
New Features
- Added
EXPLAINstatement support. - Added PostgreSQL and MySQL
CREATE TABLEpartitioning support. - Added
Value::Enum. - Added Postgres advisory lock functions.
- Added aggregate
FILTERsupport. - Added
ALTER TABLE DROP CONSTRAINT. - Added
SELECT INTO. - Added
eq_anyandne_all. - Added
Value::array_type. - Added
Expr::not_exists. - Added
serdesupport forValue. - Added
Keyword::Default. - Added index operator class support.
- Added
DROP COLUMN IF EXISTS. - Added CTE
VALUESclause support. - Added
ON CONFLICT ON CONSTRAINT.
SQL Correctness Fixes
- Fixed PostgreSQL
ON CONFLICTindex expressions by wrapping expressions in parentheses where PostgreSQL syntax requires it. - Fixed MySQL
IndexCreateStatement::cond_whereso partial index filters are emitted instead of silently dropped. - Fixed SQLite decimal handling.
- Fixed tokenizer comment parsing and backend-specific string literal handling.
- Fixed null array element handling.
Binder Crates
Use these stable companion crate versions with sea-query 1.0.0:
sea-query = "1.0"
sea-query-derive = "1.0"
sea-query-rusqlite = "0.8"
sea-query-postgres = "0.6"
sea-query-diesel = "0.3"
sea-query-rbatis = "0.2"
For SQLx users:
# SQLx 0.8 compatibility line
sea-query-sqlx = "0.8.1"
# SQLx 0.9 line
sea-query-sqlx = "0.9"
sea-query-sqlx 0.8.0 was yanked. Use 0.8.1 for SQLx 0.8, or 0.9.0 for SQLx 0.9.
Migration Notes
Review generated SQL when upgrading migrations from pre-1.0 releases, especially for:
- PostgreSQL unsigned integer columns.
- Postgres identity columns versus legacy
serial. - MySQL partial index filters.
Expr/SimpleExprconversions.TableRef,ColumnRef, and dynamic identifier construction.- Jiff value mappings.
Verification
Verified during release preparation with:
cargo +1.88 test --workspace --features all-features
cargo +1.88 doc --workspace --all-features --no-deps