Using DuckDB inside MySQL
A duck, a dolphin, and a pelican walk into a bar...
A duck, a dolphin, and a pelican walk into a bar...
MySQL 9.x added the VECTOR data type so you can store an embedding. You get a VECTOR column, functions to convert to and from text, and VECTOR_DIM() to ask how wide a vector is. What you don't get is a way to compare two vectors. The
There are a few cryptography tasks that are common to many backends. For example, you should store passwords such that a database leak doesn't expose them, you should sign payloads so the receiving side can verify them, you should keep a column's data unreadable outside the
An engineer leaves your company. You disable their single sign-on account, and their access to the wiki, the cloud console, and the CI system goes with it. Typically, access to database resources doesn't follow such a simple plan. Database user and role maintenance too often happens within
VillageSQL Server 0.0.6 is now available. This release advances the mainline to MySQL Server 8.4.11 and adds support for MySQL Server 9.7.2 and Percona Server 8.4.10. Highlights of this release include the following: * An extension can now log you in, so your
When something goes wrong inside MySQL, the server says so in the error log. It's what administrators already watch. Every entry carries a severity and an error code, and you can query it from performance_schema.error_log like any other table. It is the server's
NOTE: We are back after a summer break! Hope you enjoyed the beach and long summer nights. As part of building the MySQL Community, we are going to publish a curated overview of MySQL and database news and events that you might have missed over the last period. If you
VillageSQL Server 0.0.5 is now available (and marked as the stable release for installs). This release is focused on the extension lifecycle: upgrading an extension in place, pinning the exact version you install, and seeing what's running. The extension framework also adds variable-length custom types
As part of building the MySQL Community, we are going to publish a curated overview of MySQL and database news and events that you might have missed over the last period. If you want to get these updates, just subscribe to the blog. Enjoy! MySQL News: Note: Aggregated MySQL news
After years of MySQL development happening largely behind closed doors, Oracle has been making real progress towards making the MySQL project more open and community-oriented. Thanks and recognition should go to Heather VanCura and the MySQL team for driving these major initiatives which require heavy lifting on a 30-
MySQL's string matching is precise by design. LIKE '%shirt%' finds "shirt." It won't find "shrt" or "shrit" or anything a user actually typed when they meant "shirt." Handling that in MySQL means regex patterns that grow
As part of building the MySQL Community, we are going to publish a curated overview of MySQL and database news and events that you might have missed over the last period. If you want to get these updates, just subscribe to the blog. Enjoy! MySQL News: Note: Aggregated MySQL news
VillageSQL
You have a table. You need to serve it over HTTP. The standard path requires you to write a service in Node or Python or Go, wire up routes, translate query parameters into WHERE clauses, serialize rows as JSON, add auth middleware, deploy it separately from the database, and then
MySQL
As part of building the MySQL Community, we are going to publish a curated overview of MySQL and database news and events that you might have missed over the last period. If you want to get these updates, just subscribe to the blog. Enjoy! MySQL News: Note: Aggregated MySQL news
When you design an extensibility API, you face a tension: make it easy, or make it powerful? We think the answer is both — but not all at once. Here's how we think about it at VillageSQL, illustrated through VDFs, our modern replacement for MySQL's UDF system.
MySQL
VillageSQL launched with C++ as the language for writing extensions — C++ is familiar territory for MySQL developers. Rust has become a go-to language for systems and infrastructure developers: the same people who build database connectors, storage engines, and performance-critical services. VillageSQL's new Rust SDK adds it
VillageSQL
VillageSQL is a tracking fork of MySQL that adds the VillageSQL Extension Framework (VEF). Extensions are written in C++ (with a Rust SDK coming soon), packaged as .veb bundles, and installed with SQL. The fastest way to understand what VEF can do is to build something with it. To make
VillageSQL
VillageSQL Server 0.0.4 is now available (and marked as the stable release for installs). 0.0.4 takes the parameterized types and SQL integration from 0.0.3 and extends them in two directions: * smarter server reasoning (inference rules, custom aggregates) * operational completeness (config, metrics, secrets management) Extensions
We're on the road next week with three Bay Area events across the MySQL community. If you're at any of them, come say hi — in-person chats are so much more fun than messaging over GitHub. Oracle MySQL Community Contributors Summit - May 26, 2026 We'
MySQL still runs a remarkable share of the internet — 42% of the web is WordPress alone, plus many transactional applications you can probably name. But, the developer community is having a real argument about MySQL's future. * Stack Overflow's most recent survey put PostgreSQL ahead of MySQL
MySQL
As part of building the MySQL Community, we are going to publish a curated overview of MySQL and database news and events that you might have missed over the last period. If you want to get these updates, just subscribe to the blog. Enjoy! MySQL News: Note: Aggregated MySQL news
MySQL stores numbers well. What it can't do is treat a row's values as a multi-dimensional point in space. Standard MySQL spatial types are strictly limited to 2D (or 2D+Z) GIS data. It can’t check whether that point falls inside a bounding region,
As part of building the MySQL Community, we are going to publish a curated overview of MySQL and database news and events that you might have missed over the last period. If you want to get these updates, just subscribe to the blog. Enjoy! MySQL News: Note: Aggregated MySQL news
MySQL
Most AI integrations with a database follow the same pattern: your application fetches rows, ships them to an AI API, waits for a response, then writes the result back. It works, but it means adding a service layer to do something that's conceptually simple—apply a function to