Mysql – To what extent is MariaDB Java client a perfect replacement for MySQL JDBC (Connector/J)

jdbcmariadbMySQL

Premise: I ship a Java application which will make a JDBC connection to a MySQL database. (At the time of this writing it could be 5.1 or 5.5, but hopefully the question and answer don't rely heavily on the version.)

Observation: Clearly, I can use the the MySQL JDBC driver (Connector/J) or the MariaDB JDBC driver (MariaDB Java Client) to make the connection to the MySQL server. One huge benefit from the standpoint of an ISV is that the MariaDB driver is LGPL licensed while the MySQL driver is GPL licensed. Performance of the MariaDB driver seems very good.

Question: To what extent is the MariaDB JDBC driver a perfect replacement for the MySQL JDBC driver?

I'm not looking for a debate on the relative merits of the two. But rather I'm hoping someone can answer along the lines of one of these:

  • The MariaDB JDBC driver has important issues with X and Y, so you'll have troubles if you use either of these.
  • Based on some article or specification or code or other evidence, the MariaDB JDBC driver fully implements [at least] all methods available in the MySQL driver. You'll be fine.

Best Answer

I'm getting a bit nervous.

First, the upside: I've used the MariaDB JDBC driver in an "always on" service in production with a database connection pool and it is running fine for a couple of months now. The service only uses basic JDBC functions with simple queries (e.g. no joins, no blobs). I'm about to release another "always on" service that uses the MariaDB JDBC driver in a similar fashion.
I decided to use the MariaDB JDBC driver after (re)viewing the source code: compared to the Oracle MySQL JDBC driver source code the the MariaDB JDBC driver source code is a lot more readable and understandable.

But I get the impression (9/2014) development has slowed down (link is to a graph showing bugs created vs. resolved). If I browse through the open bugs I see many serious bugs open for far too long (issues with Hibernate and also time-zones/dates). Some of these may not be bugs but then they should have been closed by now. I also encountered one bug (via STASH-4012) that should be re-opened: bug CONJ-72 is closed but the last comment (from 4/2014) indicates the problem is not resolved for Hibernate.

All in all I do not consider the MariaDB JDBC driver a perfect replacement for the Oracle MySQL JDBC driver. I'm happy to continue to use it for the simple stuff (where all queries are known beforehand and tested) for now, but I might have to switch back to the Oracle MySQL JDBC driver in the future.