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.
Roland opened a bug “Documentation indicates some MYSQL_FIELD->flags are deprecated which aren’t.”
The MySQL protocol uses the string values of
SET-fields. To indicate that this string originated from a ENUM- or SET-column the
SET_FLAG are used in the Column Defintion
Same as Roland I wonder why they are deprecated. Is it something new? Something old?
forge.mysql.com 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
1997-10-27) which is the base-version for the protocol docs.
Now you know why I blogged about
Enjoy the internals of the current MySQL Protocol docs.
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.
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” ?
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”?
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”.
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 …
MySQL Proxy 0.8.0 has been released at http://dev.mysql.com/downloads/mysql-proxy/
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.
http://programm.froscon.org/2009/track/OpenSQLCamp/index.de.html 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.
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.