mirror of
https://github.com/launchbadge/sqlx
synced 2024-11-10 14:34:19 +00:00
chore(macros): add tests for bind parameter overrides
This commit is contained in:
parent
7d3d708d92
commit
029ba24cad
3 changed files with 50 additions and 0 deletions
|
@ -139,3 +139,5 @@ async fn test_column_override_exact() -> anyhow::Result<()> {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we don't emit bind parameter typechecks for MySQL so testing the overrides is redundant
|
||||||
|
|
|
@ -301,3 +301,49 @@ async fn test_column_override_exact() -> anyhow::Result<()> {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[sqlx_macros::test]
|
||||||
|
async fn test_bind_arg_override_exact() -> anyhow::Result<()> {
|
||||||
|
let mut conn = new::<Postgres>().await?;
|
||||||
|
|
||||||
|
let my_int = MyInt4(1);
|
||||||
|
|
||||||
|
// this query should require a bind parameter override as we would otherwise expect the bind
|
||||||
|
// to be the same type
|
||||||
|
let record = sqlx::query!(
|
||||||
|
"select * from (select 1::int4) records(id) where id = $1",
|
||||||
|
my_int as MyInt4
|
||||||
|
)
|
||||||
|
.fetch_one(&mut conn)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
assert_eq!(record.id, Some(1i32));
|
||||||
|
|
||||||
|
// test that we're actually emitting the typecast by requiring the bound type to be the same
|
||||||
|
let record = sqlx::query!("select $1::int8 as id", 1i32 as i64)
|
||||||
|
.fetch_one(&mut conn)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
assert_eq!(record.id, Some(1i64));
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
// we can't test this yet but will want to when 1.45 drops and we can strip casts to `_`
|
||||||
|
// #[sqlx_macros::test]
|
||||||
|
// async fn test_bind_arg_override_wildcard() -> anyhow::Result<()> {
|
||||||
|
// let mut conn = new::<Postgres>().await?;
|
||||||
|
//
|
||||||
|
// let my_int = MyInt4(1);
|
||||||
|
//
|
||||||
|
// let record = sqlx::query!(
|
||||||
|
// "select * from (select 1::int4) records(id) where id = $1",
|
||||||
|
// my_int as _
|
||||||
|
// )
|
||||||
|
// .fetch_one(&mut conn)
|
||||||
|
// .await?;
|
||||||
|
//
|
||||||
|
// assert_eq!(record.id, 1i32);
|
||||||
|
//
|
||||||
|
// Ok(())
|
||||||
|
// }
|
||||||
|
|
|
@ -132,3 +132,5 @@ async fn test_column_override_exact() -> anyhow::Result<()> {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we don't emit bind parameter typechecks for SQLite so testing the overrides is redundant
|
||||||
|
|
Loading…
Reference in a new issue