Method: Sequel::TinyTDS::Dataset#fetch_rows

Defined in:
lib/sequel/adapters/tinytds.rb

#fetch_rows(sql) ⇒ Object



214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/sequel/adapters/tinytds.rb', line 214

def fetch_rows(sql)
  execute(sql) do |result|
    # Mutating an array in the result is questionable, but supported
    # by tiny_tds developers (tiny_tds issue #57)
    columns = result.fields.map!{|c| output_identifier(c)}
    if columns.empty?
      args = []
      args << {:timezone=>:utc} if db.timezone == :utc
      cols = nil
      result.each(*args) do |r|
        unless cols
          cols = result.fields.map{|c| [c, output_identifier(c)]}
          self.columns = columns = cols.map(&:last)
        end
        h = {}
        cols.each do |s, sym|
          h[sym] = r[s]
        end
        yield h
      end
    else
      self.columns = columns
      if db.timezone == :utc
        result.each(:timezone=>:utc){|r| yield r}
      else
        result.each{|r| yield r}
      end
    end
  end
  self
end