Releases: SeaQL/sea-query
Releases · SeaQL/sea-query
1.0.0-rc.31
- Implement SELECT INTO for Postgres #1021
- Added
PgExpreq_anyandne_all
0.32.7
Enhancements
- Added
ValueType::is_option
Bug Fixes
- Fix incorrect casting of
ChronoDateTimeWithTimeZoneinValue::Array#933 - Add missing parenthesis to
WINDOWclause #919
SELECT .. OVER "w" FROM "character" WINDOW "w" AS (PARTITION BY "ww")- Fix serializing iden as a value in
ALTER TYPE ... RENAME TO ...statements #924
ALTER TYPE "font" RENAME TO "typeface"- Fixed the issue where milliseconds were truncated when formatting
Value::Constant#929
'2025-01-01 00:00:00.000000'
^^^^^^^0.32.6
0.32.5
0.32.4
New Features
- Added support for temporary tables #878
let statement = Table::create()
.table(Font::Table)
.temporary()
.col(
ColumnDef::new(Font::Id)
.integer()
.not_null()
.primary_key()
.auto_increment()
)
.col(ColumnDef::new(Font::Name).string().not_null())
.take();
assert_eq!(
statement.to_string(MysqlQueryBuilder),
[
"CREATE TEMPORARY TABLE `font` (",
"`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,",
"`name` varchar(255) NOT NULL",
")",
]
.join(" ")
);- Added
Value::dummy_value
use sea_query::Value;
let v = Value::Int(None);
let n = v.dummy_value();
assert_eq!(n, Value::Int(Some(0)));Bug Fixes
- Quote type properly in
AsEnumcasting #880
let query = Query::select()
.expr(Expr::col(Char::FontSize).as_enum(TextArray))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT CAST("font_size" AS "text"[]) FROM "character""#
);0.32.3
New Features
- Support
Update FROM ..#861
let query = Query::update()
.table(Glyph::Table)
.value(Glyph::Tokens, Expr::column((Char::Table, Char::Character)))
.from(Char::Table)
.cond_where(
Expr::col((Glyph::Table, Glyph::Image))
.eq(Expr::col((Char::Table, Char::UserData))),
)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"UPDATE "glyph" SET "tokens" = "character"."character" FROM "character" WHERE "glyph"."image" = "character"."user_data""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"UPDATE "glyph" SET "tokens" = "character"."character" FROM "character" WHERE "glyph"."image" = "character"."user_data""#
);- Support
TABLESAMPLE(Postgres) #865
use sea_query::extension::postgres::PostgresSelectStatementExt;
let query = Query::select()
.columns([Glyph::Image])
.from(Glyph::Table)
.table_sample(SampleMethod::SYSTEM, 50.0, None)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "image" FROM "glyph" TABLESAMPLE SYSTEM (50)"#
);- Support
ALTER COLUMN USING ..(Postgres) #848
let table = Table::alter()
.table(Char::Table)
.modify_column(
ColumnDef::new(Char::Id)
.integer()
.using(Expr::col(Char::Id).cast_as(Alias::new("integer"))),
)
.to_owned();
assert_eq!(
table.to_string(PostgresQueryBuilder),
[
r#"ALTER TABLE "character""#,
r#"ALTER COLUMN "id" TYPE integer USING CAST("id" AS integer)"#,
]
.join(" ")
);House Keeping
- Updated
ordered-floatto4 - Updated
thiserrorto2
0.32.2
New Features
- Added
with_cteto useWITHclauses in all statements #859
let select = SelectStatement::new()
.columns([Glyph::Id, Glyph::Image, Glyph::Aspect])
.from(Glyph::Table)
.to_owned();
let cte = CommonTableExpression::new()
.query(select)
.table_name(Alias::new("cte"))
.to_owned();
let select = SelectStatement::new()
.columns([Glyph::Id, Glyph::Image, Glyph::Aspect])
.from(Alias::new("cte"))
.with_cte(cte)
.to_owned();
assert_eq!(
select.to_string(PostgresQueryBuilder),
[
r#"WITH "cte" AS"#,
r#"(SELECT "id", "image", "aspect""#,
r#"FROM "glyph")"#,
r#"SELECT "id", "image", "aspect" FROM "cte""#,
]
.join(" ")
);Enhancements
- Added
Expr::column#852 - Added Postgres function
DATE_TRUNC#825 - Added
INCLUDEclause for Postgres BTree index #826
Bug Fixes
- Write empty Postgres array as '{}' #854
0.32.1
New Features
- Added
Value::as_null
let v = Value::Int(Some(2));
let n = v.as_null();
assert_eq!(n, Value::Int(None));- Added bitwise and/or operators (
bit_and,bit_or) #841
let query = Query::select()
.expr(1.bit_and(2).eq(3))
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT (1 & 2) = 3"#
);Enhancements
- Added
GREATEST&LEASTfunction #844 - Added
ValueType::enum_type_name()#836 - Removed "one common table" restriction on recursive CTE #835
House keeping
- Remove unnecessary string hashes #815
0.32.0
New Features
- Construct Postgres query with vector extension #774
- Added
postgres-vectorfeature flag - Added
Value::Vector,ColumnType::Vector,ColumnDef::vector(),PgBinOper::EuclideanDistance,PgBinOper::NegativeInnerProductandPgBinOper::CosineDistance
assert_eq!( Query::select() .columns([Char::Character]) .from(Char::Table) .and_where( Expr::col(Char::Character).eq(Expr::val(pgvector::Vector::from(vec![1.0, 2.0]))) ) .to_string(PostgresQueryBuilder), r#"SELECT "character" FROM "character" WHERE "character" = '[1,2]'"# );
- Added
- Added
ExprTraitto unifyExprandSimpleExprmethods #791 - Support partial index
CREATE INDEX .. WHERE ..#478
Enhancements
- Replace
Educewith manual implementations #817
sea-query-derive
- Merged
#[enum_def]intosea-query-derive #[enum_def]now impl additionalIdenStaticandAsRef<str>#769
sea-query-attr
- Updated
syn,heckanddarling sea-query-attris now deprecated
Upgrades
0.32.0-rc.2
New Features
- Added
ExprTraitto unifyExprandSimpleExprmethods #791 - Support partial index
CREATE INDEX .. WHERE ..#478
Enhancements
- Replace
Educewith manual implementations #817
sea-query-derive
- Merged
#[enum_def]intosea-query-derive #[enum_def]now impl additionalIdenStaticandAsRef<str>#769
sea-query-attr
- Updated
syn,heckanddarling sea-query-attris now deprecated
Upgrades
- Upgrade
rusqliteto0.32#802