Class Sequel::ADO::Dataset
In: lib/sequel/adapters/ado.rb
Parent: Sequel::Dataset

Methods

Public Instance methods

[Source]

     # File lib/sequel/adapters/ado.rb, line 225
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, i|
257:               h[name] = if (v = field_values[i]) && cp
258:                 cp[v]
259:               else
260:                 v
261:               end
262:             end
263:             
264:             yield h
265:           end
266:         end
267:       end

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

[Source]

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

[Validate]