Class: Sequel::TinyTDS::Dataset

Inherits:
Dataset
  • Object
show all
Includes:
MSSQL::DatasetMethods
Defined in:
lib/sequel/adapters/tinytds.rb

Defined Under Namespace

Modules: ArgumentMapper

Constant Summary collapse

PreparedStatementMethods =
prepared_statements_module("sql = prepared_sql; opts = Hash[opts]; opts[:arguments] = bind_arguments", ArgumentMapper)

Constants included from MSSQL::DatasetMethods

MSSQL::DatasetMethods::CONSTANT_MAP, MSSQL::DatasetMethods::EXTRACT_MAP, MSSQL::DatasetMethods::LIMIT_ALL

Instance Method Summary collapse

Methods included from MSSQL::DatasetMethods

#complex_expression_sql_append, #constant_sql_append, #count, #cross_apply, #disable_insert_output, #empty?, #escape_like, #full_text_search, #insert_select, #insert_select_sql, #into, #mssql_unicode_strings, #nolock, #outer_apply, #output, #quoted_identifier_append, #returning, #select_sql, #server_version, #supports_cte?, #supports_group_cube?, #supports_group_rollup?, #supports_grouping_sets?, #supports_insert_select?, #supports_intersect_except?, #supports_is_true?, #supports_join_using?, #supports_merge?, #supports_modifying_joins?, #supports_multiple_column_in?, #supports_nowait?, #supports_offsets_in_correlated_subqueries?, #supports_output_clause?, #supports_returning?, #supports_skip_locked?, #supports_where_true?, #supports_window_functions?, #with_mssql_unicode_strings, #with_ties

Methods included from EmulateOffsetWithRowNumber

#empty?, #select_sql, #supports_offsets_in_correlated_subqueries?

Instance Method Details

#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