I am stunned no more people have been bitten by this. Or at least, the Intarweb has not heard about it. Censorship perhaps? I haven’t researched more into the causes, but anyway…
I was pushing a project I have had lingering for some time from Rails 2.0.x to 2.1.x (yes, 2.2 is already out there, but 2.1 is the version that will ship with Lenny) - The changes should not be too invasive, as it is a minor release, but there are some quite noticeable changes.
Anyway… What was the problem? Take this very simple migration:
class CreatePeople < ActiveRecord::Migration
create_table :people do |t|
t.column :login, :string, :null => false
t.column :passwd, :string, :null => false
t.column :firstname, :string, :null => false
t.column :famname, :string, :null => false
t.column :email, :string
t.column :pw_salt, :string t.column :created_at, :timestamp t.column :last_login_at, :timestamp end end
def self.down drop_table :people end end </code> The problem is that PostgreSQL refuses to create a hyperdimensional string field. I offer this here to you, line-wrapped by me for your convenience.
Beautiful. Now I can store strings not only as character vectors, but as planes, cubes, hypercubes, and any other hyperdimensional construct! Are we approaching quantum computers? What is really striking is that… I found only one occurrence on tha net of this bug - one and a half years ago, in Ola Bini’s blog. No stunned users looking for the culprit, no further reports… Strange. Still, the bug was fixed in Rails 2.2 about half a year ago, although not in revisions of earlier versions. I will request the patch to be applied to earlier versions as well. Sigh.