diff --git a/sqlx-bench/benches/pg_pool.rs b/sqlx-bench/benches/pg_pool.rs index 0c0d02212..487048a0c 100644 --- a/sqlx-bench/benches/pg_pool.rs +++ b/sqlx-bench/benches/pg_pool.rs @@ -1,6 +1,7 @@ use criterion::{criterion_group, criterion_main, Bencher, Criterion}; use sqlx::PgPool; +use sqlx::postgres::PgPoolOptions; use std::time::{Duration, Instant}; fn bench_pgpool_acquire(c: &mut Criterion) { @@ -23,18 +24,18 @@ fn bench_pgpool_acquire(c: &mut Criterion) { fn do_bench_acquire(b: &mut Bencher, concurrent: u32, fair: bool) { let pool = sqlx_rt::block_on( - PgPool::builder() - // we don't want timeouts because we want to see how the pool degrades - .connect_timeout(Duration::from_secs(3600)) - // force the pool to start full - .min_connections(50) - .max_connections(50) - // we're not benchmarking `ping()` - .test_before_acquire(false) - .__fair(fair) - .build( - &dotenv::var("DATABASE_URL").expect("DATABASE_URL must be set to run benchmarks"), - ), + PgPoolOptions::new( + &dotenv::var("DATABASE_URL").expect("DATABASE_URL must be set to run benchmarks"), + ) + // we don't want timeouts because we want to see how the pool degrades + .connect_timeout(Duration::from_secs(3600)) + // force the pool to start full + .min_connections(50) + .max_connections(50) + // we're not benchmarking `ping()` + .test_before_acquire(false) + .__fair(fair) + .connect(), ) .expect("failed to open PgPool"); diff --git a/sqlx-core/src/mysql/mod.rs b/sqlx-core/src/mysql/mod.rs index 95cdfa025..fd692e8d0 100644 --- a/sqlx-core/src/mysql/mod.rs +++ b/sqlx-core/src/mysql/mod.rs @@ -31,6 +31,9 @@ pub use value::{MySqlValue, MySqlValueFormat, MySqlValueRef}; /// An alias for [`Pool`][crate::pool::Pool], specialized for MySQL. pub type MySqlPool = crate::pool::Pool; +/// An alias for [`PoolOptions`][crate::pool::PoolOptions], specialized for MySQL. +pub type MySqlPoolOptions = crate::pool::PoolOptions; + // NOTE: required due to the lack of lazy normalization impl_into_arguments_for_arguments!(MySqlArguments); impl_executor_for_pool_connection!(MySql, MySqlConnection, MySqlRow); diff --git a/src/lib.rs b/src/lib.rs index 20ce4d0e1..7885e0732 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,7 +3,7 @@ pub use sqlx_core::acquire::Acquire; pub use sqlx_core::arguments::{Arguments, IntoArguments}; pub use sqlx_core::column::Column; -pub use sqlx_core::connection::Connection; +pub use sqlx_core::connection::{ConnectOptions, Connection}; pub use sqlx_core::database::{self, Database}; pub use sqlx_core::executor::{Execute, Executor}; pub use sqlx_core::from_row::FromRow; @@ -124,6 +124,7 @@ pub mod query { /// Convenience re-export of common traits. pub mod prelude { pub use super::Acquire; + pub use super::ConnectOptions; pub use super::Connection; pub use super::Executor; pub use super::FromRow; diff --git a/tests/mssql/mssql.rs b/tests/mssql/mssql.rs index 0aeb4dfb8..2c286a8dd 100644 --- a/tests/mssql/mssql.rs +++ b/tests/mssql/mssql.rs @@ -1,6 +1,6 @@ use futures::TryStreamExt; use sqlx::mssql::Mssql; -use sqlx::{Connect, Connection, Executor, MssqlConnection, Row}; +use sqlx::{Connection, Executor, MssqlConnection, Row}; use sqlx_core::mssql::MssqlRow; use sqlx_test::new; diff --git a/tests/mysql/mysql.rs b/tests/mysql/mysql.rs index 50efe6548..8cf739897 100644 --- a/tests/mysql/mysql.rs +++ b/tests/mysql/mysql.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use sqlx::mysql::{MySql, MySqlPool, MySqlRow}; +use sqlx::mysql::{MySql, MySqlPool, MySqlPoolOptions, MySqlRow}; use sqlx::{Connection, Executor, Row}; use sqlx_test::new; @@ -73,13 +73,14 @@ CREATE TEMPORARY TABLE users (id INTEGER PRIMARY KEY); Ok(()) } + #[sqlx_macros::test] async fn it_executes_with_pool() -> anyhow::Result<()> { - let pool: MySqlPool = MySqlPool::builder() + let pool: MySqlPool = MySqlPoolOptions::new(&dotenv::var("DATABASE_URL")?)? .min_connections(2) .max_connections(2) .test_before_acquire(false) - .build(&dotenv::var("DATABASE_URL")?) + .connect() .await?; let rows = pool.fetch_all("SELECT 1; SELECT 2").await?; diff --git a/tests/sqlite/describe.rs b/tests/sqlite/describe.rs index 4f420e6d2..605c1850a 100644 --- a/tests/sqlite/describe.rs +++ b/tests/sqlite/describe.rs @@ -1,7 +1,8 @@ use sqlx::error::DatabaseError; use sqlx::sqlite::{SqliteConnectOptions, SqliteError}; +use sqlx::ConnectOptions; use sqlx::{sqlite::Sqlite, Column, Executor}; -use sqlx::{Connect, SqliteConnection, TypeInfo}; +use sqlx::{SqliteConnection, TypeInfo}; use sqlx_test::new; use std::env; @@ -159,7 +160,7 @@ async fn it_describes_insert_with_read_only() -> anyhow::Result<()> { let mut options: SqliteConnectOptions = env::var("DATABASE_URL")?.parse().unwrap(); options = options.read_only(true); - let mut conn = SqliteConnection::connect_with(&options).await?; + let mut conn = options.connect().await?; let d = conn .describe("INSERT INTO tweet (id, text) VALUES (2, 'Hello')") diff --git a/tests/sqlite/sqlite.db b/tests/sqlite/sqlite.db index 0dddba468..ac649928f 100644 Binary files a/tests/sqlite/sqlite.db and b/tests/sqlite/sqlite.db differ diff --git a/tests/sqlite/sqlite.rs b/tests/sqlite/sqlite.rs index 44bc9cd58..f38431f8f 100644 --- a/tests/sqlite/sqlite.rs +++ b/tests/sqlite/sqlite.rs @@ -1,6 +1,7 @@ use futures::TryStreamExt; +use sqlx::sqlite::SqlitePoolOptions; use sqlx::{ - query, sqlite::Sqlite, sqlite::SqliteRow, Connect, Connection, Executor, Row, SqliteConnection, + query, sqlite::Sqlite, sqlite::SqliteRow, Connection, Executor, Row, SqliteConnection, SqlitePool, }; use sqlx_test::new; @@ -126,11 +127,11 @@ async fn it_fetches_in_loop() -> anyhow::Result<()> { #[sqlx_macros::test] async fn it_executes_with_pool() -> anyhow::Result<()> { - let pool: SqlitePool = SqlitePool::builder() + let pool: SqlitePool = SqlitePoolOptions::new(&dotenv::var("DATABASE_URL")?)? .min_connections(2) .max_connections(2) .test_before_acquire(false) - .build(&dotenv::var("DATABASE_URL")?) + .connect() .await?; let rows = pool.fetch_all("SELECT 1; SElECT 2").await?;