# File mysql-serialize.rb, line 184 def sql_initdb (dbi) sql = "CREATE TABLE " << sql_quote_name("sql_ids") << " (" sql << sql_quote_name("id") << " INT NOT NULL PRIMARY KEY, " sql << sql_quote_name("class") << " VARCHAR(255) NOT NULL, " sql << sql_quote_name("refs") << " INT NOT NULL, " sql << "INDEX (" << sql_quote_name("id") << ")" sql << ") TYPE = InnoDB" dbi.do_more(sql) sql = "CREATE TABLE " << sql_quote_name("sql_meta") << " (" sql << sql_quote_name("id") << " BIGINT UNSIGNED" sql << ") TYPE = InnoDB" dbi.do_more(sql) dbi.do_more("INSERT INTO " << sql_quote_name("sql_meta") << " VALUES (0)") # trying to remove some redundant code... [["String", "LONGBLOB"], ["Fixnum", "INT"], ["Float", "DOUBLE"], ["Date", "DATE"], ["Time", "TIME"], ["Boolean", "BIT"], ["Bignum", "LONGTEXT"]].each { |class_type| classname, typename = class_type sql = "CREATE TABLE " << sql_quote_name(classname) << " (" sql << sql_quote_name("sql_assoc_id") << " INT NOT NULL, " sql << sql_quote_name("val") << " " << typename << " NOT NULL, " sql << "INDEX (" << sql_quote_name("sql_assoc_id") << "), " sql << "FOREIGN KEY (" << sql_quote_name("sql_assoc_id") << ") " sql << "REFERENCES " << sql_quote_name("sql_ids") << "(" sql << sql_quote_name("id") << ") ON DELETE CASCADE" sql << ") TYPE = InnoDB" dbi.do_more(sql) } # built in classes that need special attention: # Exception sql = "CREATE TABLE " << sql_quote_name("Exception") << " (" sql << sql_quote_name("sql_assoc_id") << " INT NOT NULL, " sql << sql_quote_name("type") << " VARCHAR(255) NOT NULL, " sql << sql_quote_name("backtrace") << " LONGTEXT NOT NULL, " sql << "INDEX (" << sql_quote_name("sql_assoc_id") << "), " sql << "FOREIGN KEY (" << sql_quote_name("sql_assoc_id") << ") " sql << "REFERENCES " << sql_quote_name("sql_ids") << "(" sql << sql_quote_name("id") << ") ON DELETE CASCADE" sql << ") TYPE = InnoDB" # File sql = "CREATE TABLE " << sql_quote_name("File") << " (" sql << sql_quote_name("sql_assoc_id") << " INT NOT NULL, " sql << sql_quote_name("path") << " LONGTEXT NOT NULL, " sql << sql_quote_name("pos") << " BIGINT NOT NULL, " sql << sql_quote_name("mode") << " CHAR(2) NOT NULL, " sql << "INDEX (" << sql_quote_name("sql_assoc_id") << "), " sql << "FOREIGN KEY (" << sql_quote_name("sql_assoc_id") << ") " sql << "REFERENCES " << sql_quote_name("sql_ids") << "(" sql << sql_quote_name("id") << ") ON DELETE CASCADE" sql << ") TYPE = InnoDB" end