We keep telling people that the client/server protocol that we use is the same as MySQL's.
We do not test it at all, the only testing that is regularly done for the server is implemented with C/C client that is also owned by us. C/C can have bugs, that can be compensated on the server site.
To fix this problem, we need to implement testing for protocol features. The probably single way to do that is to test server with more than just C/C. Perhaps, ideally we can run unit tests suites of the connectors that are not owned by us on buildbot.
There are several alternatives for choosing the connectors to test server against.
- libmysql by Oracle (or their Connector/C)
- C/J by Oracle
- C/NET by Oracle
- C/NET by comminuty https://github.com/mysql-net/MySqlConnector
- C/Python by Oracle (native python mode)
- perl DBI/DBD
- anything else ?
C/J by MariaDB is a viable alternative, not ideal (since it is aware of mariadb features), but still it does run against MySQL server by Oracle regularly, and is not as tied to the server as C/C
Now, to the test suites
- libmysql can be tested with mysql_client_test (part of the server).
- Our C/J can be unittested tested with maven
- https://github.com/mysql-net/MySqlConnector describes how to test with their connector
We can also do "program minimum" rather than run "program maximum" (full connector test suites), which is
connect/query with result set or update, same with prepared statement/disconnect.