Module: Sequel::JDBC::SQLServer::DatabaseMethods::MetadataDatasetMethods
- Defined in:
- lib/sequel/adapters/jdbc/sqlserver.rb
Overview
Work around a bug in SQL Server JDBC Driver 3.0, where the metadata for the getColumns result set specifies an incorrect type for the IS_AUTOINCREMENT column. The column is a string, but the type is specified as a short. This causes getObject() to throw a com.microsoft.sqlserver.jdbc.SQLServerException: “The conversion from char to SMALLINT is unsupported.” Using getString() rather than getObject() for this column avoids the problem. Reference: social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/20df12f3-d1bf-4526-9daa-239a83a8e435
Instance Method Summary collapse
- #process_result_set_convert(cols, result) ⇒ Object
- #process_result_set_no_convert(cols, result) ⇒ Object
Instance Method Details
#process_result_set_convert(cols, result) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/sequel/adapters/jdbc/sqlserver.rb', line 22 def process_result_set_convert(cols, result) while result.next row = {} cols.each do |n, i, p| v = (n == :is_autoincrement ? result.getString(i) : result.getObject(i)) row[n] = if v if p p.call(v) elsif p.nil? cols[i-1][2] = p = convert_type_proc(v) if p p.call(v) else v end else v end else v end end yield row end end |
#process_result_set_no_convert(cols, result) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/sequel/adapters/jdbc/sqlserver.rb', line 48 def process_result_set_no_convert(cols, result) while result.next row = {} cols.each do |n, i| row[n] = (n == :is_autoincrement ? result.getString(i) : result.getObject(i)) end yield row end end |