Progress Report March 2009
Developments seem to be accelerating, here’s anecdotal evidence.
Foreign Keys
The Foreign Keys (all engines) worklog task passed another milestone last week: now MySQL is doing referential constraint checks at end of statement when the standard so prescribes, rather than row-by-row. This means that the all-engines functionality is now slightly greater than what’s in MySQL’s current InnoDB-only foreign-key handling.
The closing of Bug#989
“The wheels of the gods grind slowly, but they grind exceedingly fine.” Our Bordeaux-area Maria expert Guilhem Bichot reported Bug#989 “If DROP TABLE while there’s an active transaction, wrong binlog order” in August 2003 and some unkind soul even mentioned it on the wikipedia article about MySQL. The mention is gone now. And so is the bug. I’m being a glass-is-half-full kind of guy these days, so instead of whining “it took a while” I’m exulting “these are the days when things are getting done”. Send thanks to the fixer and the reviewer, their names are on the report.
Performance Schema
The feature I blogged about so extensively last month, the WL#2360: Performance Schema, now has several people working on it: 1 implementor, 1 architect, 2 code reviewers, 1 Quality Assurance reviewer, 1 person from the Enterprise Tools team that puts together the MySQL Enterprise Monitor. The April 20 2009 deadline, for making the code public, is looking very doable.
Character Sets
Some worklog tasks have passed the architecture-review stage and coding is in progress: one which fixes a complaint about certain functions that return BINARY/VARBINARY when CHAR/VARCHAR would do, one for a change to FORMAT() so that for example the number 1.23 might appear as 1,23 with comma instead of decimal point in some locales, one for Latin9 (iso-8859-15) character set, one for Error message construction that will eventually replace the unwieldy errmsg system we have now. The worker on this is Alexander Barkov, and if you want to ask him how’s it going, meet him at the MySQL User Conference in three weeks.

April 1st, 2009 at 1:19 am
Great to hear about the progress on the global foreign keys.
Can you specify in which launchpad branch each of these activities is occurring? Thanks!
April 1st, 2009 at 9:31 am
Peter!
“now MySQL is doing referential constraint checks at end of statement when the standard so prescribes, rather than row-by-row.”
wow - ! this is a huge improvement IMO. Is there any change the same plumbing that allows for this can be used to do statement level checking for unique/primary key constraints?
April 1st, 2009 at 2:52 pm
About the progress on foreign keys:
Arjen Lentz asked if it’s on launchpad (that is, a publicly available source code listing). Probably not. This is a ‘6.1′ project. But the team lead for this project — Konstantin Osipov — will be presenting the talk about foreign keys along with me at the user conference, so you can grill him about the schedule.
Roland Boumann asked if end-of-statement checking could apply for other types of constraints too. Probably not. We have that on our wish list, see
http://forge.mysql.com/worklog/task.php?id=2235
but that doesn’t mean much. It won’t be in 6.x.
April 2nd, 2009 at 2:35 pm
Actually foreign keys work is available on launchpad as https://code.launchpad.net/~mysql/mysql-server/mysql-6.1-fk
Note that one should not expect much from it as it is really “work in progress” tree.
April 5th, 2009 at 10:19 am
Hi Peter,
Great to see so much good progress on all fronts!! Keep up the good work!