mirror of
https://github.com/launchbadge/sqlx
synced 2024-09-20 14:21:57 +00:00
25efb2f7f4
Breaking changes: * integer decoding will now loudly error on overflow instead of silently truncating. * some usages of the query!() macros might change an i32 to an i64. Also adds support for *decoding* `u64`s because there's no reason not to. Closes #3179
35 lines
913 B
Rust
35 lines
913 B
Rust
use sqlx::{Any, Sqlite};
|
|
use sqlx_test::new;
|
|
|
|
#[sqlx_macros::test]
|
|
async fn it_encodes_bool_with_any() -> anyhow::Result<()> {
|
|
sqlx::any::install_default_drivers();
|
|
let mut conn = new::<Any>().await?;
|
|
|
|
let res = sqlx::query("INSERT INTO accounts (name, is_active) VALUES (?, ?)")
|
|
.bind("Harrison Ford")
|
|
.bind(true)
|
|
.execute(&mut conn)
|
|
.await
|
|
.expect("failed to encode bool");
|
|
assert_eq!(res.rows_affected(), 1);
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[sqlx_macros::test]
|
|
async fn issue_3179() -> anyhow::Result<()> {
|
|
sqlx::any::install_default_drivers();
|
|
|
|
let mut conn = new::<Any>().await?;
|
|
|
|
// 4294967297 = 2^32
|
|
let number: i64 = sqlx::query_scalar("SELECT 4294967296")
|
|
.fetch_one(&mut conn)
|
|
.await?;
|
|
|
|
// Previously, the decoding would use `i32` as an intermediate which would overflow to 0.
|
|
assert_eq!(number, 4294967296);
|
|
|
|
Ok(())
|
|
}
|