DuckDB Bindings
Hey Mojicians! To help me getting into Mojo I've started working on a client API/bindings for my favorite database DuckDB:
https://github.com/sbrunk/duckdb.mojo
GitHub
GitHub - sbrunk/duckdb.mojo: Mojo Bindings for DuckDB
Mojo Bindings for DuckDB. Contribute to sbrunk/duckdb.mojo development by creating an account on GitHub.
3 Replies
I've improved the API with a bit of type foo to return native Mojo types, even for nested types like lists (column types in DuckDB can be arbitrarily deeply nested).
Before this change results were always in returned in wrapper types like [ListVal[Int32Val]] and we had to peel them out one by one.
Now we call i.e. chunk.get(list(string), row=0, col=0) and it will return a List[Optional[String] directly.
This should make the API a bit more ergonomic to use:
Slides from the presentation at today's community meeting: https://blog.brunk.io/slides/2024-08-12-mojo-community-meeting-duckdb/
I've updated the code to work with MAX/Mojo 24.5 und switched over to Magic.
I've also added CI tests, which have already uncovered a crash that happens only on Linux, not on macOS. Still need to debug and investigate the source.
The recently released version 1.1 of DuckDB allows defining scalar functions and aggregate functions via the C API (
https://duckdb.org/2024/09/09/announcing-duckdb-110.html#community-extensions). I'm planning to add support for that next so we can write DuckDB extensions in Mojo with all the SIMD goodies and of course also utilize MAX.
DuckDB
Announcing DuckDB 1.1.0
The DuckDB team is happy to announce that today we're releasing DuckDB version 1.1.0, codenamed “Eatoni”.