Published at 14:12, Tue 20 Mar 2007
Here’s some astonishingly bad MySQL insanity.
mysql> select id, label, concat('[', label, ']') as literal
mysql> from tag where label = 'gpl' \G
*************************** 1. row ***************************
id: 255649
label: gpl
literal: [gpl ]
For the record, the column is of type varchar(255) character set utf8
collate utf8_bin — not char(N), and certainly not char(4). I don’t
know how better I can tell MySQL that I really really care about equality of
the actual values I’m trying to store in this column.
I’m prepared to believe that this is merely a bug in our particular point-release of the server, rather than a fundamental design flaw, but that doesn’t stop it being incredibly hateful: if I’m looking for something equal to an exemplar, then, no, something vaguely similar is not sufficient.