Odd DBI Heisenbug with tinyints being retrieved as either Fixnums or Strings

I’m using MySQL tinyints to map to Ruby Boolean values in Lafcadio,
and I’ve come across a really odd behavior: Sometimes the values
coming out of DBI are Fixnums, and sometimes they’re Strings. Has
anybody else seen this? For now I wrote defensive code into Lafcadio
that just checks at runtime, but a more comprehensive answer would be
… reassuring.