From ba23fdeb76f9d4804de4a6078980832de8e374c0 Mon Sep 17 00:00:00 2001 From: Bogdan Mircea <98585737+bobozaur@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:48:08 +0300 Subject: [PATCH] Compile-time support for external drivers (#3889) * Make sqlx-macros-core::database public * Move driver installation to bins * Fix lint --- sqlx-cli/src/bin/cargo-sqlx.rs | 2 ++ sqlx-cli/src/bin/sqlx.rs | 2 ++ sqlx-cli/src/lib.rs | 2 -- sqlx-macros-core/src/database/mod.rs | 1 + sqlx-macros-core/src/lib.rs | 2 +- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sqlx-cli/src/bin/cargo-sqlx.rs b/sqlx-cli/src/bin/cargo-sqlx.rs index a5b5db8e..e7ebcc92 100644 --- a/sqlx-cli/src/bin/cargo-sqlx.rs +++ b/sqlx-cli/src/bin/cargo-sqlx.rs @@ -15,6 +15,8 @@ enum Cli { async fn main() { sqlx_cli::maybe_apply_dotenv(); + sqlx::any::install_default_drivers(); + let Cli::Sqlx(opt) = Cli::parse(); if let Err(error) = sqlx_cli::run(opt).await { diff --git a/sqlx-cli/src/bin/sqlx.rs b/sqlx-cli/src/bin/sqlx.rs index c0159079..23f9ac56 100644 --- a/sqlx-cli/src/bin/sqlx.rs +++ b/sqlx-cli/src/bin/sqlx.rs @@ -7,6 +7,8 @@ async fn main() { // Checks for `--no-dotenv` before parsing. sqlx_cli::maybe_apply_dotenv(); + sqlx::any::install_default_drivers(); + let opt = Opt::parse(); // no special handling here diff --git a/sqlx-cli/src/lib.rs b/sqlx-cli/src/lib.rs index adcc6a13..43096c40 100644 --- a/sqlx-cli/src/lib.rs +++ b/sqlx-cli/src/lib.rs @@ -204,8 +204,6 @@ where F: FnMut(&'a str) -> Fut, Fut: Future> + 'a, { - sqlx::any::install_default_drivers(); - let db_url = opts.expect_db_url()?; backoff::future::retry( diff --git a/sqlx-macros-core/src/database/mod.rs b/sqlx-macros-core/src/database/mod.rs index f74a58b6..50cd516c 100644 --- a/sqlx-macros-core/src/database/mod.rs +++ b/sqlx-macros-core/src/database/mod.rs @@ -33,6 +33,7 @@ pub struct CachingDescribeBlocking { #[allow(dead_code)] impl CachingDescribeBlocking { + #[allow(clippy::new_without_default, reason = "internal API")] pub const fn new() -> Self { CachingDescribeBlocking { connections: LazyLock::new(|| Mutex::new(HashMap::new())), diff --git a/sqlx-macros-core/src/lib.rs b/sqlx-macros-core/src/lib.rs index 0bd8f38b..1f790b58 100644 --- a/sqlx-macros-core/src/lib.rs +++ b/sqlx-macros-core/src/lib.rs @@ -27,7 +27,7 @@ pub type Error = Box; pub type Result = std::result::Result; mod common; -mod database; +pub mod database; #[cfg(feature = "derive")] pub mod derives;