MySQL Conference 2009 daily summary: Monday

April 21, 2009


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!

  • Can you link this blog post to the wiki at ?? (and tomorrow's to, etc)

  • Thanks for attending my tutorial Shlomi. I enjoyed the participation of the attendees too. FWIW, the purpose of my talk was to present solutions to mistakes I see frequently in questions posted online. Seemingly rudimentary topics like improper use of ENUM and FLOAT and NULL are nevertheless common blunders. But I understand that they may be basic for attendees as a MySQL conference!

  • @Bill,

    Thanks for commenting! I think I may need to learn how to phrase myself better: I absolutely do not see any problem with discussing basic and trivial material in the UC.
    I actually think it's very important. Your discussion on ENUM and FLOAT was to the point, and if I were to pick a random MySQL DBAs audience, I would have no doubt that a great many of them would not have such topic clear in their heads.
    So, I was merely expressing my own personal preference.

    An example from today's class would be a guy who thought an index over a VARCHAR column would not work for a "LIKE 'a/b/c/d/%'. Therefore, this particular discussion alone was extremely beneficial to that guy.


  • @Sheeri - I've linked to the wiki. See you around!

  • Sorry, I meant "can you edit the monday page to add a link FROM the wiki TO this post under both talks you talk about?"

    I said it backwards. 🙂 Basically keeping the links organized on the dailies so that in 1 week or 1 month it's easy to find out the conference-related posts.

  • Hi Shlomi!

    thanks for attending, it was great to have you. I'm glad you liked the session.

    While it's true that the daemon, information_schema and storage engine plugins cannot be considered clean, the audit and fulltext plugins are. So, like Sergei mentioned, his original 2 year old fulltext code still works just fine.

    Of course, I agree completely that it would be even better if the same would hold for the other plugin types. That said, I think that if you want to use information_schema plugins for reporting interesting things in the server, we probaly can't expect it to happen in the short term, as it would presuppose the entire server to be built of modules that have a public API to report status.

    Anyway, thanks again, and let me know if you need any help building plugins.

    kind regards,


Powered by Wordpress and MySQL. Theme by