| Class | Sequel::ODBC::Dataset |
| In: |
lib/sequel_core/adapters/odbc.rb
|
| Parent: | Sequel::Dataset |
| BOOL_TRUE | = | '1'.freeze |
| BOOL_FALSE | = | '0'.freeze |
| ODBC_TIMESTAMP_FORMAT | = | "{ts '%Y-%m-%d %H:%M:%S'}".freeze |
| ODBC_TIMESTAMP_AFTER_SECONDS | = | ODBC_TIMESTAMP_FORMAT.index( '%S' ).succ - ODBC_TIMESTAMP_FORMAT.length |
| ODBC_DATE_FORMAT | = | "{d '%Y-%m-%d'}".freeze |
| UNTITLED_COLUMN | = | 'untitled_%d'.freeze |
# File lib/sequel_core/adapters/odbc.rb, line 124
124: def fetch_rows(sql, &block)
125: execute(sql) do |s|
126: begin
127: untitled_count = 0
128: @columns = s.columns(true).map do |c|
129: if (n = c.name).empty?
130: n = UNTITLED_COLUMN % (untitled_count += 1)
131: end
132: output_identifier(n)
133: end
134: rows = s.fetch_all
135: rows.each {|row| yield hash_row(row)} if rows
136: ensure
137: s.drop unless s.nil? rescue nil
138: end
139: end
140: self
141: end
# File lib/sequel_core/adapters/odbc.rb, line 104
104: def literal(v)
105: case v
106: when true
107: BOOL_TRUE
108: when false
109: BOOL_FALSE
110: when Time, DateTime
111: formatted = v.strftime(ODBC_TIMESTAMP_FORMAT)
112: usec = (Time === v ? v.usec : (v.sec_fraction * 86400000000))
113: formatted.insert(ODBC_TIMESTAMP_AFTER_SECONDS, ".#{(usec.to_f/1000).round}") if usec >= 1000
114: formatted
115: when Date
116: v.strftime(ODBC_DATE_FORMAT)
117: else
118: super
119: end
120: end