Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Add upstream MySQL 9.0 vector type to Vitess #16463

Closed
dbussink opened this issue Jul 23, 2024 · 0 comments · Fixed by #16464
Closed

RFC: Add upstream MySQL 9.0 vector type to Vitess #16463

dbussink opened this issue Jul 23, 2024 · 0 comments · Fixed by #16464
Assignees
Labels
Type: RFC Request For Comment

Comments

@dbussink
Copy link
Contributor

dbussink commented Jul 23, 2024

In MySQL 9.0, Oracle has decided to add a new data type, called VECTOR. This stores a vector of floating point values natively in different table types.

While we are still a very long way out to supporting MySQL 9.0 to be used with Vitess in a cluster setup, Vitess is also used for other purposes.

The Vitess parser for example can be used standalone, as well as the Vitess MySQL protocol parser. This means that Vitess is used as part of the MySQL ecosystem also as more of a client than a server. In general, when there's a breaking change like this protocol addition, it's important to add client side support everywhere downstream before a server would start using it.

I have submitted already a PR to the Go MySQL driver for this new type (see go-sql-driver/mysql#1609) and to various other open source projects.

Given the above mentioned usages of Vitess also as a client, I believe it to be prudent to add at least the basic support for the type in Vitess. This means that we can parse the new table definition with a VECTOR type and can handle the type showing up in the protocol and binary logs. With those things in place, usages of Vitess as a library are as compatible moving forward as we can.

It also means that when we start support MySQL 9.x at some point in the future, we don't have to worry about then also delaying it because of a lack of client side support and in older versions for upgrades etc.

See also #14717 for a more general issue about Vitess usage as a library that also links to various other efforts we have done in this area. A concrete tool that would work with MySQL 9.0 schemas once this is fixed is https://github.com/planetscale/schemadiff.

To be explicit, these changes don't mean any immediate full support in Vitess for MySQL 9.0 (as we're still also working on 8.4) support, but it's done in preparation for the future to avoid compatibility problems in that future.

Use Case(s)

Prepare for the new VECTOR type being used in the MySQL ecosystem and allow it being used in the future with Vitess.

@dbussink dbussink added the Type: RFC Request For Comment label Jul 23, 2024
@dbussink dbussink self-assigned this Jul 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: RFC Request For Comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant