launchbadge / sqlx

🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite.
Apache License 2.0
13.52k stars 1.28k forks source link

Feature Request: Support DuckDB in SQLx #3186

Open DeflateAwning opened 7 months ago

DeflateAwning commented 7 months ago

Is your feature request related to a problem? Please describe. I wish I could use DuckDB in SQLx. SQLite is too slow for many of my applications, whereas DuckDB is exactly what I need.

Describe the solution you'd like I'd like DuckDB support which parallels SQLite.

Describe alternatives you've considered SQLite is an alternative. The official DuckDB bindings for Rust are totally good and usable, but being able to have compile-time SQL checks, and integration with the ORM layers on top of sqlx would be awesome!

Additional context DuckDB is an interesting database that is quite similar to SQLite (in-process execution, single-file databases, light weight, single-executable). Their client crate offers an API very similar to that of rusqlite. As an OLAP database, it is very fast, and very good for data analytics, an area which Rust is making large strides in (esp. with the development of Polars).

abonander commented 7 months ago

See the following comment for our general disposition on adding drivers: https://github.com/launchbadge/sqlx/issues/3115#issuecomment-2002636940

See also #1999

DeflateAwning commented 7 months ago

1999 is closed, so I opened a new issue to track this active request. Hopefully more people will get in here to vote for this one, as I think it has huge potential!

JohnstonJ commented 2 months ago

I would also be interested in this! For users who want to use embedded databases, from what I've read, DuckDB is the go-to embedded OLAP database. It doesn't fill the same role as SQLite. And sqlx doesn't support any competing embedded OLAP database products.

abonander commented 1 month ago

The way SQLx is designed now, a DuckDB driver would not strictly need to be merged into this repo to be usable.

There's some roughness around the macros and sqlx-cli that I have plans to address in future releases.