{"id":16812910,"url":"https://github.com/sjmudd/go-mysqlx-driver","last_synced_at":"2025-04-11T01:43:36.360Z","repository":{"id":66973099,"uuid":"68392428","full_name":"sjmudd/go-mysqlx-driver","owner":"sjmudd","description":"A MySQL X protocol driver for Go's database/sql package","archived":false,"fork":false,"pushed_at":"2016-09-28T07:49:30.000Z","size":177,"stargazers_count":20,"open_issues_count":2,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-24T22:51:17.894Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sjmudd.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-16T15:37:51.000Z","updated_at":"2022-03-30T11:20:07.000Z","dependencies_parsed_at":"2023-05-16T08:00:28.464Z","dependency_job_id":null,"html_url":"https://github.com/sjmudd/go-mysqlx-driver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjmudd%2Fgo-mysqlx-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjmudd%2Fgo-mysqlx-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjmudd%2Fgo-mysqlx-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjmudd%2Fgo-mysqlx-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sjmudd","download_url":"https://codeload.github.com/sjmudd/go-mysqlx-driver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248327744,"owners_count":21085257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T10:23:56.926Z","updated_at":"2025-04-11T01:43:36.341Z","avatar_url":"https://github.com/sjmudd.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is a project I started to see what would be required to create\na database/sql driver for the MySQL X protocol which was announced\nas part of the MySQL 5.7.12 server release.\n\nDocumentation of the MySQL X protocol can be found here:\nhttps://dev.mysql.com/doc/internals/en/x-protocol.html.\n\nThe code in this project is based very heavily on the original MySQL\ndriver which was available on https://github.com/go-sql-driver/mysql\nas of the time that the MySQL X protocol was announced.\n\nCopyright (C) 2016 Simon J Mudd \u003csjmudd@pobox.com\u003e\n\nKNOWN ISSUES\n============\n\nThis file lists the current known issues with the driver where I\nhave bothered to find them. They can be split into the following\ntypes:\n\n[A] Issues with the driver itself\n---------------------------------\n\nA1. Use of TLS mode is not possible yet if the appropriate seting\nis provided with the DSN.\n\nA2. No way to determine mysqlx_max_allowed_packet short of doing a\nfull query after authorisation. This will add several round trips\nto the connection to get this information and is needed to set\ninternal buffers but to also to prevent sending \"too large packets\"\nto the server.\n\nA3. No way to provide parameters to SQL queries\n\nA4. Support of understanding all datatypes is incomplete\n\nA5. Documentation of the mapping of the MySQL datatypes to the value\nprovided back to the caller is not done. This is actually quite\nimportant to ensure that behavour is clearly defined.\n\nA6. No character set support.  The X protocol is also rather vague\nabout expectations for client and server initial setups which does\nnot help. However some character data that's received from the MySQL\nserver may require conversion to Go's utf8 etc and that is not done\nas the Go driver does not expose the server's internal datatypes.\n\n[B] Issues with using the X protocol using github.com/golang/go-sql-driver because the\ndriver does not support the functionality needed by X protocol or expose them to the\nclient.\n---------------------------------\n\nB1. No way to disconnect a session and re-authenticate, allowed by\nX protocol but not by go driver. Close() is likely to drop the\nconnection to ensure that previous state does not remain in the\n\"previous connection\".\n\nB2. No way to determine capabilities prior to logging in. Perhaps\nnot critical but not currently possible. X protocol allows this\nwhich may be convenient.\n\nB3. No way to use the XAPI type JSON/document store interface. This\nprobably makes sense as database/sql assumes you're going to talk\nSQL.\n\nB4. No way to pipeline commands. You must wait for a single statement\nto complete prior to sending the next one. The pool functionality\nof the go driver would allow you to use another connection transparently\nbut that's not the same.\n\nB5. No way to change TLS setting once connected. The attribute is\na connection setting and while it may not be common to want to\nchange behaviour it might be convenient.\n\nB6. No support for anything like init_connect which can be used\nfrequently. I think really this should be negoatiated as part of\nthe X protocol but that functionality is not currently present.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjmudd%2Fgo-mysqlx-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsjmudd%2Fgo-mysqlx-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjmudd%2Fgo-mysqlx-driver/lists"}