When looking back at 2013, one of the things that really stand out is what we’ve done with MySQL in Linux distros. At least it stands out to me, but for most people it’s probably the janitorial work that they never notice as long as everything keeps working perfectly. Although invisible to most, this is the important work that makes it possible for all Linux users to run MySQL.
Most distros are maintained by volunteers doing packaging work in their spare time, and we as software developers should be very grateful for all the work and effort they put into distributing our software (for free!). I know we at Oracle are!
We’ve had a distro-like project of our own in 2013. We have created our own repositories for various Linux distros (I hope to see more in the future), so that users that want the latest and greatest can get that even if their distro is a bit more conservative. This is something our users have been asking for for a long time. If they want, they can even get development versions and take them for a test run.
But it’s not only users that will benefit from this. Having our own repositories means that we have to do the same packaging work that maintainers in the distros are doing. A nice side effect of this is that we will have more experienced people to help maintainers when they bump into a problem. Since our packages are ready at the same time as we release the new version, we may actually have a solution ready and waiting for them. We’ve actually experienced this a few times now with distros starting to package MySQL 5.6.
I went through the list of bugs reported by package maintainers and bugs for which the distros have had their own patches, and tried to find out which bugs we’ve fixed for the Linux distros in 2013. This is what I found:
- Bug #35019 Use pthread_attr_getguardsize for better robustness of stack thread sizes
- Bug #48864 MySQL fails to compile on 64 bit Fedora 12
- Bug #59106 Wrong symlinks created for libmysqlclient_r shared library
- Bug #59905 Plugin boolean variables don’t behave well on unsigned-char machines
- Bug #62394 handle_options is no longer exported by libmysqlclient
- Bug #62769 unportable usage of va_list in sql-common/client_plugin.c
- Bug #63055 mysql assumes all ethernet devices are named ethX
- Bug #68896 VARARG Errors – Coverity results
- Bug #68918 USE_AFTER_FREE Errors – Coverity Scan
- Bug #69458 rpl.rpl_deadlock_innodb test failing in 5.5.32
- Bug #69823 (Security bug)
- Bug #70184 Old advices in mysql-log-rotate script
- Bug #70591 Coverity analysis results and patches
- Bug #70830 Coverity analysis results and patches
14 bugs. It’s possible that I’ve missed a few.
Sometimes when a user reports a bug, the bug is of such a nature that the reporter is the only one that will ever experience it. The way I see it, fixing a bug reported by a Linux distro not only fixes a problem for the package maintainer, but for all the users of that distro.
Some people stand out as frequent bug reporters: Honza Horák, package maintainer in Fedora and Red Hat is one of them. 5 of the 14 bugs above have been reported by him. Great work!
A number of bugs have been found by Coverity. We also use code analysis and error checking tools ourselves, e.g. cppcheck, AddressSanitizer and Valgrind, but sometimes they miss something. It’s good to have people out there running different checks, finding other bugs.
Another bug category is portability bugs. Either low-level stuff like which type a va_list is, or more high-level assumptions like the name of ethernet devices. Linux distros build MySQL on many platforms that we at Oracle don’t compile and test it on (and much less support). That doesn’t mean that we don’t care. In most cases we’ll fix it, even if the platform is completely unsupported.
If the platform is very exotic and the fix is platform specific, we will not be able to test and maintain the fix in the future. In those cases, we may choose to not fix it upstream but leave it to the distro to maintain a patch (they usually already have a patch ready) since they have the platform to test it on. But even then, if there’s a problem with the patch later on, we’ll be more than happy to help.
Bug #69458 deserves a special mention. It’s one of those cases where the bug was in the test, not in the server code. Still, it caused a lot of talk, both inside and outside MySQL. This one was extra tricky because the buggy test didn’t fail itself, but rather it didn’t clean up after itself, which caused subsequent tests to fail. Not fun to debug.
There’s a lot of people that have spent a considerable amount time on MySQL packaging in various Linux distros. I especially want to thank
- Nicholas Bamber for taking on the task of upgrading to 5.5 in Debian 7.0 (wheezy). Most of this work was done before 2013, but we now see his work in a stable release. Excellent work! Thank you very much!
- Clint Byrum for maintaining the 5.5 series in Debian after Nicholas handed it over. He’s a huge resource for the maintainer team to have around. By the way, Debian is now looking for more people to work on MySQL, especially DDs and DMs. So if you’re interested, please don’t hesitate to step up, DD or not! The MySQL packaging team will be glad to have you!
- James Page, Chuck Short and the rest of the Ubuntu Server Team for maintaining 5.5 in Ubuntu and for supporting the effort to upgrade to 5.6. The MySQL session at UDS is becoming a tradition, and I really look forward to the next.
- Björn Boschman for taking the initiative to get 5.6 into Debian. He now gets help from Akhil Mohan from MySQL Release Engineering, and I’m confident that they will do great work together.
- Honza Horák for his maintenance of MySQL in Fedora and Red Hat. Since spring 2013, Bjørn Munch from MySQL Release Engineering has been feeding him with 5.6 packages every time a new release comes out. I’m really looking forward to F21, which will be the first Fedora to contain 5.6. As mentioned above, Honza is also a frequent bug reporter.
- Jan Staněk from Fedora and Red Hat for reporting bugs #68896 and #68918.
- Remi Collet for maintaining MySQL Workbench, Utilities and connectors in Fedora. He also maintains his own repositories with MySQL and a large number of other packages for almost every Fedora release ever made. I’m a Debian/Ubuntu user myself, but the more I learn about Fedora, the more I hear the phrase “Remi packages”. Amazing!
- Michal Hrušecký for his excellent work in openSUSE, packaging MySQL Server 5.5, 5.6, 5.7 DMRs (!), MySQL Cluster, tools and connectors (and probably some more that I forgot)! This is just impressive!
Thank you all for spending so much of 2013 packaging MySQL!
I’m working on the server, so my list is naturally biased. I’m sorry that I don’t have the full list of package maintainers for Workbench, connectors and other tools and utilities. If you’re a package maintainer working on a MySQL product but not mentioned above, it doesn’t mean that your work is appreciated any less, it just means that I don’t know who you are. I would really like to hear from more maintainers, both for MySQL Server and other products! Send me a mail, comment on this blog post, or contact me in some other way. And thank you to you, too!