# File lib/dbd/mysql/database.rb, line 187
        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
                    #type = row[1]
                    #size = type[type.index('(')+1..type.index(')')-1]
                    #size = 0
                    #type = type[0..type.index('(')-1]

                    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]

                    case col['type_name']
                    when 'timestamp'
                        col['dbi_type'] = DBI::Type::Timestamp
                    end

                    col
                end # collect
            end # execute

            ret
        end