Monday: day of tutorials. Plenty of interesting tutorials on the Conference itself, plus a session with Mark Callaghan - it was hard to choose. I settled for two tutorials, which turned out to be three.
Practical MySQL Plugin Development: As a C/C++/Java developer, I am very interested in the plugin API. I have used UDF before, and these turned out to be extremely helpful, and solved me a lot of headache. With the new plugin API I was expecting to learn how to properly write INFORMATION_SCHEMA tables, functions and engines.
Wasn't it possible to learn all this on the web? Sure, but this presentation was delivered by Roland Bouman and Sergei Golubchik, and I was anxious to hear from their experience. Well, that's what the conference is all about, isn't it?
The session was very good. Roland & Sergei covered the basics of the Plugin API, the general ideas, then went on to present the specific implementations: daemon plugins, INFORMATION_SCHEMA, FULLTEXT. The session was accompanied by convincing and enlighting examples. For example, a QUERY_CACHE_TABLE: an INFORMATION_SCHEMA table which lists which queries are currently in the query cache, along with the number of used blocks etc.
However, I was a bit discouraged by several findings:
- The Plugin API is not well defined. It is not stabilized nor well documented. This means the API may change frequently, rendering your plugins useless.
- In order to develop a plugin, you must compile it against every single MySQL version you want the plugin to be deployed with. You actually need to recompile MySQL from source to do so. I find this discouraging, since it's a lot of hassle: each time you change anything in your plugin, you get to have a dozen, maybe more, MySQL source compilations to work through. I believe this will generally make developers less eager to develop plugins (but maybe it's just me!).
I next attended SQL Antipatterns Strike Back by Bill Karwin. I was impressed by his last year "SQL Antipatterns" presentation (I didn't attend, just downloaded) and was keen to see what he had to add.
A lot of interesting issues were presented: trees, polymorphic tables, and more. Some were less of an interest (e.g. using a separate table instead of ENUM, using DECIMAL instead of FLOAT for currency calculations), and I found them to be very basic (of course, I don't consider this as 'bad').
On a critic note, with pardon, the presenter seemed a bit out of date with regard to MySQL's abilities, or with common utilities such as maatkit's mk-duplicate-key-checker; with long-time solved bugs in MySQL and more.
But allow me to be clear that the presenter made very good points, and had a lot of insight with regard to improper practices and with common problems. I found the session to be interesting and good. The audience was actively participating, asking, suggesting or rejecting: this is always an indication for an interesting session!
I later joined the Partitioning in MySQL 5.1 session by Giuseppe Maxia & Sarah Sproehnle. I found the presentation to be in good spirits, and it shed some new light on some partitioning behavior I was wondering about. It also presented some utilities and use cases. I only attended the last 40 minutes or so of this session, but was very pleased.
Of course, the joke of the day was Sun's acquisition by Oracle. So if Giuseppe was saying that "we are rather limited by working on InnoDB partitioning, since they're not our guys - those who are developing InnoDB" - hey, now they are!
Anyway, Giuseppe sent some thick hints about an important announcement tomorrow, after which he will be free to discuss further issues. Will we all be sent home tomorrow, I wonder?
I'm not much into pondering about the acquisition. Ke sera sera, as the song goes. Looking forward for tomorrow's announcement, though.
Tomorrow, Tuesday, will be a much busier day, with lots of interesting sessions, shorter ones. Besides, tomorrow's the day when everyone get over their jet lag!