Skip to content

Add XAPI support #478

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

Open
rykr opened this issue Sep 6, 2016 · 19 comments
Open

Add XAPI support #478

rykr opened this issue Sep 6, 2016 · 19 comments

Comments

@rykr
Copy link

rykr commented Sep 6, 2016

Hey guys

Any interest in adding xapi support to your Go driver to support the new protocol and APIs that we have introduced with 5.7? If so please reach out to me as we would love to help.

@methane
Copy link
Member

methane commented Sep 6, 2016

I am.
Is it stable now?

@dgryski
Copy link

dgryski commented Sep 6, 2016

@rykr
Copy link
Author

rykr commented Sep 6, 2016

@methane @dgryski Yes that is the one. The protocol is documented although new features are still being added but what has been documented and released is certainly stable enough to work against. The API is not publicly documented as a standard but our released connectors show the pattern we are using. Certainly driver developers can use whatever API they choose but we feel it would be better to follow a similar pattern.

@rykr
Copy link
Author

rykr commented Sep 6, 2016

We will be setting up a page highlighting externally maintained drivers. When that page is ready would be ok to list this provider there?

@methane
Copy link
Member

methane commented Sep 7, 2016

@rykr While I'm interested in X Protocol, I don't know this project should use it.
This project doesn't provide APIs to users directly. It works behind "database/sql" standard library.
So providing X Dev API is out of scope.

One possibility is use X Protocol only for standard SQL. I'll try it and benchmark it.
If it's significant faster than current MySQL protocol, I'll create RFC issue here.

@dgryski
Copy link

dgryski commented Sep 7, 2016

@sjmudd has been working on implementing a Go driver for the X Protocol, and will be speaking about it at Oracle OpenWorld 2016 in SF. He probably has something useful to contribute to this discussion.

@rykr
Copy link
Author

rykr commented Sep 7, 2016

Great. Will that be a different project here on GitHub?

On Sep 7, 2016 3:27 AM, "Damian Gryski" [email protected] wrote:

@sjmudd https://github.com/sjmudd has been working on implementing a Go
driver for the X Protocol, and will be speaking about it at Oracle
OpenWorld 2016 in SF. He probably has something useful to contribute to
this discussion.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#478 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGpXLp18iXv6n57afOWyGWAVsqIB5sQks5qnnVWgaJpZM4J15XK
.

@sjmudd
Copy link
Contributor

sjmudd commented Sep 8, 2016

It will be yes. It's still at an early stage and I can talk to you directly if you're interested.

@sjmudd
Copy link
Contributor

sjmudd commented Sep 8, 2016

There seem to be several different issues here:

  • Support for the new API (document store) which might work through the existing MySQL protocol. I would not expect that database/sql would be able to support that as it only supports a "SQL interface"
  • Support for the X protocol, announced in the MySQL 5.7.12 server, in database/sql. This as I've seen has some issues as use of the X protocol potentially provides more flexibility to the user. However the user will be unlikely to be able to make use of these features as database/sql does not provide any hooks into lower level drivers which might be relevant here.
  • To make use of all the planned features in the X protocol perhaps a full driver is needed and this has all the inconvenience of starting from scratch.
  • See also: database/sql: add API and give it some love golang/go#16673 which is relevant.
  • Also note that for other languages MySQL exposes the protocol for "Document store" access using the XDEV API: https://dev.mysql.com/doc/x-devapi-userguide/en/. This does not use SQL at all and it may be that some Go users might want to have a similar interface as offered in other currently supported languages.

@lefred
Copy link

lefred commented Mar 29, 2019

Hi, what kind of help are you looking for ? Our MySQL connectors engineer will be please to answer all your questions and provide you directions to include MySQL X Protocol to the Go SQL Driver. Please join #connectors in MySQL Community Slack (https://lefred.be/mysql-community-on-slack/)

@dgryski
Copy link

dgryski commented Mar 29, 2019

@lefred Does Oracle have any plans for contributing an XAPI driver for Go?

@lefred
Copy link

lefred commented Mar 31, 2019

@dgryski we don't have plan to take over any MySQL Go driver, we think you are doing a good job and we don't see any need to deliver one ourselves. However we would like to encourage the support of the X protocol and therefor help you to integrate it. Any questions, tip requests are welcome.

@lefred
Copy link

lefred commented Mar 31, 2019

@laoshaw
Copy link

laoshaw commented Jul 5, 2019

is there an estimation when go-mysqlx becomes available?

@dveeden
Copy link
Contributor

dveeden commented Jul 6, 2019

@laoshaw Any specific reason why you want this?

@laoshaw
Copy link

laoshaw commented Jul 6, 2019

Want to switch a django/python-mysqlx-connector project to go/mysql8 as I need both RDBS and JSON in the same database, it seems not many are taking this approach? I'm checking TiDB, still if there is good mysqlx/go connector driver I would prefer MySQL.

@dveeden
Copy link
Contributor

dveeden commented Jul 8, 2019

Sounds like you want "Document Store" support, not just "X Protocol". One is built on top of the other. I don't think anyone is working on this for Go.

Note that you can use JSON columns and functions over the classic protocol, just not the "X DevAPI" syntax.

Best to use MySQL 8.0 for this

Transporting SQL over X Protocol would allow one to use pipelining and some other features not present in the classic protocol. So I expect a first version for Go to add support for X Protocol transport for performance reasons without new syntax

@laoshaw
Copy link

laoshaw commented Jul 8, 2019

Yes I will use the classic protocol for json-column with mysql for now. After trying TiDB I realize I have to stick with MySQL as my workload is more OLTP where MySQL is good at.

I just found some alpha work for mysqlx: https://github.com/AlekSi/mysqlx

@aleyrizvi
Copy link

Apologies to bump an old thread, is there any work going on?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants