I recently worked through an issue with a client trying to detect data drift across some servers that were located in different timezones. Unfortunately, several of the tables had timestamp fields and were set to a default value of CURRENT_TIMESTAMP. From the manual, here is how MySQL handles timezone locality with timestamp fields: Values for TIMESTAMP columns are [...]
PHP vs. BIGINT vs. float conversion caveat
Sometimes you need to work with big numbers in PHP (gulp). For example, sometimes 32-bit identifiers are not enough and you have to use BIGINT 64-bit ids; e.g. if you are encoding additional information like the server ID into high bits of the ID. I had already written about the mess that 64-bit integers are [...]
Integers in PHP, running with scissors, and portability
Until recently I thought that currently popular scripting languages, which mostly evolved over last 10 years or something, must allow for easier portability across different platforms compared to ye good olde C/C++. After all, their development started a few decades after C, so its notorious caveats are all well-known and should be easy to avoid [...]
MySQL automatic data truncation can backfire
I had a fun case today. There is set of cache tables which cache certain content in MyISAM tables and queries for these tables such as:
1 | select data from cache0003 where `key`=2342526263 and real_key='cp_140797_6460aad5d2e50d3e859e8649007686ac'; |
The “key” is CRC32 of the real key which is used to keep index size as small as possible so if we have a cache miss we can [...]

