Bug #82930 X protocol: Please provide full documentation on known capabilities
Submitted: 9 Sep 2016 17:51 Modified: 22 Sep 2016 10:30
Reporter: Simon Mudd (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Document Store: Documentation Severity:S4 (Feature request)
Version:5.7.15 OS:Any
Assigned to: CPU Architecture:Any
Tags: capabilities, documentation, specification, x protocol

[9 Sep 2016 17:51] Simon Mudd
Description:
The MySQL X protocol internals does not provide a full list of "Capabilities" which are provided if the client uses the CapabilitiesGet message.

It would be convenient to document this more formally.
While it may be that new features arise they should be also documented as that happens.

How to repeat:
Check https://dev.mysql.com/doc/internals/en/x-protocol.html and look for a formal definition of the capabilities exchange that's possible.

Suggested fix:
I notice a few things here.
- provide a list of those current capabilities which may be shown to the client and expected values
- provide an indication of which of these capabilities can be changed by the user as some like tls can be changed (0 or 1) whereas others such as plugin.version obviously is not settable by the client.
- ideally this information should be provided as part of the protocol: e.g. add another property: read_only_capabilities: [ array of property names ] ...., or writeable_properties: [ array of property names ]
- there's no documentation which talks about this now but it would seem best to not expose the mysql plugin version. Expose "functionality" by name etc instead, and also consider only exposing the minimal information possible until authentication has taken place. (there's already an open FR for this)
[22 Sep 2016 10:30] MySQL Verification Team
Hello Simon,

Thank you for the report.

Thanks,
Umesh