def columns(table)
dbh = DBI::DatabaseHandle.new(self)
uniques = []
dbh.execute("SHOW INDEX FROM #{table}") do |sth|
sth.each do |row|
uniques << row[4] if row[1] == "0"
end
end
ret = nil
dbh.execute("SHOW FIELDS FROM #{table}") do |sth|
ret = sth.collect do |row|
name, type, nullable, key, default, extra = row
sqltype, type, size, decimal = mysql_type_info(row[1])
col = Hash.new
col['name'] = name
col['sql_type'] = sqltype
col['type_name'] = type
col['nullable'] = nullable == "YES"
col['indexed'] = key != ""
col['primary'] = key == "PRI"
col['unique'] = uniques.index(name) != nil
col['precision'] = size
col['scale'] = decimal
col['default'] = row[4]
col
end
end
ret
end