89: def column_info
90: columns = [ ]
91:
92:
93:
94: @result_set.columns.each_with_index do |name, i|
95: columns[i] = { } unless columns[i]
96: columns[i]["name"] = name
97: type_name = @result_set.types[i]
98:
99: if type_name
100: m = DBI::DBD::SQLite.parse_type(type_name)
101:
102: columns[i]["type_name"] = m[1]
103: columns[i]["precision"] = m[3].to_i if m[3]
104: columns[i]["scale"] = m[5].to_i if m[5]
105: DBI_TYPE_MAP.each do |map|
106: if columns[i]["type_name"] =~ map[0]
107: columns[i]["sql_type"] = map[1]
108: break
109: end
110: end
111:
112: case columns[i]["type_name"]
113: when 'double'
114: columns[i]["dbi_type"] = DBI::Type::Float
115: end
116: end
117: end
118:
119: return columns
120: end