Building in C applications in Wine

July 24, 2013

Every once in a while the Continuous Integration reminds me that the code I write isn’t “that” portable. I develop on Linux, push to the SCM and the CI goes out and builds on several Unixes and Windows.

Fixing windows build issues through the CI takes quite a while. It is far easier to have a local windows build-environment around to do the build, testing before you push. You could make that quite efficient by installing Windows in a VM, use shared-folders, use cygwin+sshd to log into it from the command-line …

… or you simplify it even more and just use wine.

Read more ...

Story of Bug#69627

July 08, 2013

Roland opened a bug “Documentation indicates some MYSQL_FIELD->flags are deprecated which aren’t.”

The MySQL protocol uses the string values of ENUM- and SET-fields. To indicate that this string originated from a ENUM- or SET-column the ENUM_FLAG and SET_FLAG are used in the Column Defintion

Same as Roland I wonder why they are deprecated. Is it something new? Something old?

Read more ...

MySQL Protocol Docs update

September 03, 2012

Now that is shutdown the protocol documentation found a new/old home at:

It documents the early days of MySQL 3.20 as seen in:

up to the features added MySQL 5.6.x:

For the old versions it was somewhat interesting to find sources and binaries to test against as the MySQL launchpad repository only goes back until 3.23.22-beta which was 2000-07-31. I could find sources dating back to mysql-3.20.32a (1997-10-27) which is the base-version for the protocol docs.

Now you know why I blogged about CLIENT_LONG_PASSWORD

Enjoy the internals of the current MySQL Protocol docs.

Read more ...

MySQL Proxy: 0.8.3 released

August 30, 2012

We are proud to announce the release of

MySQL Proxy 0.8.3 (alpha)

which updates MySQL Proxy for the protocol changes introduced in MySQL 5.5 and 5.6.

All users of MySQL Proxy 0.8.x are recommend to upgrade.

Read more ...


February 23, 2012

Today a little history lesson.

I was on a quest to find the origin of this line in include/mysql_com.h:

#define CLIENT_LONG_PASSWORD    1       /* new more secure passwords */

“new” ? “more secure” ?

These CLIENT_* flags are used between client and server to negotiate what capabilities they support. It allows the server to add new features to the protocol and let’s the client add support for it along the way. MySQL 5.5.x has 21 of these flags.

But back to CLIENT_LONG_PASSWORD and its wonderful comment. What would one expect if someone reads “new” and “more secure”?

Read more ...

Finding memleaks in win32 with valgrind

June 02, 2010

I use MacOS X for most of my development work, but part of my job is writing apps that run on all major Unixes and Win32. Most of the time bugs and memleaks are “portable”, meaning that they appear on all platforms in the same way and fixing them on your dev-platforms, fixes them everywhere else.

Well, “most of the time”.

Read more ...

MySQL 5.5's Semi Sync Replication: the protocol side

April 10, 2010

I’m preparing the code for my MySQLConf 2010 session “MySQL Proxy meets: Memcache” where I’ll present how to replicate from MySQL to memcache by using the MySQL Proxy.

Part of it will be using the semi-sync replication support for MySQL 5.5 to implement a synchronous MySQL-to-Memcache replication. All I need is the network protocol definition for semi-sync …

Read more ...

MySQL Proxy: 0.8.0 released

January 26, 2010

MySQL Proxy 0.8.0 has been released at

While it took a while to get it out, it contains a lot of good stuff and will make a few more things possible for the future. First of all, it is the first release with a threaded network-backend allowing to use plenty of CPUs.

The other big infrastructure change is mostly for developers: out-of-tree plugins can now be written. Now you can write plugins for the MySQL Proxy against a installed MySQL Proxy. No need to have the MySQL Proxy’s source code around.

Read more ...

MySQL Proxy: FrosCon 2009

August 18, 2009

I’ll be at the OpenSQLCamp 2009 which is part of the FrosCon this weekend and give a talk about drumroll MySQL Proxy. has all the sessions incl. my

MySQL Proxy: a MySQL toolbox

Architecture and Concepts of misuse 

It will be an extension of my MySQL Conference talk from this year with binlogs, frm-files, … and what happens if you expose MySQLs core functionality as libraries and wrap it with a scripting layer.

Read more ...

MySQL Proxy: profiling 0.8

August 06, 2009

In MySQL Proxy 0.8 we are added a multi-threaded network-subsystem allowing several networks events be processed in parallel. Early benchmarks show that what we have in trunk basicly works.

But the benchmarks weren’t as good as we expected. That’s the time where you prepare to get dirty.

Read more ...