class Sequel::ADO::Dataset

Public Instance Methods

fetch_rows(sql) { |h| ... } click to toggle source
    # File lib/sequel/adapters/ado.rb
225 def fetch_rows(sql)
226   execute(sql) do |recordset|
227     cols = []
228     conversion_procs = db.conversion_procs
229 
230     i = -1
231     ts_cp = nil
232     recordset.Fields.each do |field|
233       type = field.Type
234       cp = if type == AdDBTimeStamp
235         ts_cp ||= begin
236           nsec_div = 1000000000.0/(10**(timestamp_precision))
237           nsec_mul = 10**(timestamp_precision+3)
238           meth = db.method(:to_application_timestamp)
239           lambda do |v|
240             # Fractional second handling is not correct on ruby <2.2
241             meth.call([v.year, v.month, v.day, v.hour, v.min, v.sec, (v.nsec/nsec_div).round * nsec_mul])
242           end
243         end
244       else
245         conversion_procs[type]
246       end
247       cols << [output_identifier(field.Name), cp, i+=1]
248     end
249 
250     self.columns = cols.map(&:first)
251     return if recordset.EOF
252 
253     recordset.GetRows.transpose.each do |field_values|
254       h = {}
255 
256       cols.each do |name, cp, index|
257         h[name] = if (v = field_values[index]) && cp
258           cp[v]
259         else
260           v
261         end
262       end
263       
264       yield h
265     end
266   end
267 end
provides_accurate_rows_matched?() click to toggle source

ADO can return for for delete and update statements, depending on the provider.

    # File lib/sequel/adapters/ado.rb
270 def provides_accurate_rows_matched?
271   false
272 end