Class: Sequel::ADO::Dataset

Inherits:
Dataset show all
Defined in:
lib/sequel/adapters/ado.rb

Direct Known Subclasses

Access::Dataset, MSSQL::Dataset

Constant Summary

Constants inherited from Dataset

Dataset::ACTION_METHODS, Dataset::BITWISE_METHOD_MAP, Dataset::COLUMNS_CLONE_OPTIONS, Dataset::COLUMN_CHANGE_OPTS, Dataset::CONDITIONED_JOIN_TYPES, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::COUNT_SELECT, Dataset::DEFAULT, Dataset::DEFAULT_PREPARED_STATEMENT_MODULE_METHODS, Dataset::EMPTY_ARRAY, Dataset::EMPTY_SELECT, Dataset::EXISTS, Dataset::EXTENSIONS, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::JOIN_METHODS, Dataset::LIKE_OPERATORS, Dataset::NON_SQL_OPTIONS, Dataset::N_ARITY_OPERATORS, Dataset::OPTS, Dataset::PREPARED_ARG_PLACEHOLDER, Dataset::PREPARED_STATEMENT_MODULE_CODE, Dataset::QUALIFY_KEYS, Dataset::QUERY_METHODS, Dataset::REGEXP_OPERATORS, Dataset::TRUE_FREEZE, Dataset::TWO_ARITY_OPERATORS, Dataset::UNCONDITIONED_JOIN_TYPES, Dataset::WILDCARD

Instance Attribute Summary

Attributes inherited from Dataset

#db, #opts

Instance Method Summary collapse

Methods inherited from Dataset

#<<, #==, #[], #add_graph_aliases, #aliased_expression_sql_append, #all, #array_sql_append, #as_hash, #avg, #bind, #boolean_constant_sql_append, #call, #case_expression_sql_append, #cast_sql_append, clause_methods, #clone, #column_all_sql_append, #columns, #columns!, #complex_expression_sql_append, #constant_sql_append, #count, #current_datetime, def_sql_method, #delayed_evaluation_sql_append, #delete, #distinct, #dup, #each, #each_server, #empty?, #eql?, #escape_like, #except, #exclude, #exclude_having, #exists, #extension, #filter, #first, #first!, #first_source, #first_source_alias, #first_source_table, #for_update, #freeze, #from, #from_self, #frozen?, #function_sql_append, #get, #graph, #grep, #group, #group_and_count, #group_append, #group_by, #group_cube, #group_rollup, #grouping_sets, #hash, #having, #import, #initialize, #insert, #insert_sql, #inspect, #intersect, #invert, #join, #join_clause_sql_append, #join_on_clause_sql_append, #join_table, #join_using_clause_sql_append, #joined_dataset?, #last, #lateral, #limit, #literal_append, #lock_style, #map, #max, #min, #multi_insert, #multi_insert_sql, #naked, #negative_boolean_constant_sql_append, #offset, #or, #order, #order_append, #order_by, #order_more, #order_prepend, #ordered_expression_sql_append, #paged_each, #placeholder_literal_string_sql_append, #prepare, #qualified_identifier_sql_append, #qualify, #quote_identifier_append, #quote_identifiers?, #quote_schema_table_append, #quoted_identifier_append, #recursive_cte_requires_column_aliases?, register_extension, #requires_placeholder_type_specifiers?, #requires_sql_standard_datetimes?, #returning, #reverse, #reverse_order, #row_number_column, #row_proc, #schema_and_table, #select, #select_all, #select_append, #select_group, #select_hash, #select_hash_groups, #select_map, #select_more, #select_order_map, #server, #server?, #set_graph_aliases, #single_record, #single_record!, #single_value, #single_value!, #skip_limit_check, #skip_locked, #split_alias, #split_qualifiers, #sql, #subscript_sql_append, #sum, #supports_cte?, #supports_cte_in_subqueries?, #supports_derived_column_lists?, #supports_distinct_on?, #supports_group_cube?, #supports_group_rollup?, #supports_grouping_sets?, #supports_insert_select?, #supports_intersect_except?, #supports_intersect_except_all?, #supports_is_true?, #supports_join_using?, #supports_lateral_subqueries?, #supports_limits_in_correlated_subqueries?, #supports_modifying_joins?, #supports_multiple_column_in?, #supports_offsets_in_correlated_subqueries?, #supports_ordered_distinct_on?, #supports_regexp?, #supports_replace?, #supports_returning?, #supports_select_all_and_column?, #supports_skip_locked?, #supports_timestamp_timezones?, #supports_timestamp_usecs?, #supports_where_true?, #supports_window_functions?, #to_hash, #to_hash_groups, #truncate, #truncate_sql, #unfiltered, #ungraphed, #ungrouped, #union, #unlimited, #unordered, #unqualified_column_for, #unused_table_alias, #update, #update_sql, #where, #where_all, #where_each, #where_single_value, #window_sql_append, #with, #with_extend, #with_quote_identifiers, #with_recursive, #with_row_proc, #with_sql, #with_sql_all, #with_sql_delete, #with_sql_each, #with_sql_first, #with_sql_insert, #with_sql_single_value

Methods included from SQL::StringMethods

#ilike, #like

Methods included from SQL::OrderMethods

#asc, #desc

Methods included from SQL::NumericMethods

#+, #coerce

Methods included from SQL::ComplexExpressionMethods

#extract, #sql_boolean, #sql_number, #sql_string

Methods included from SQL::CastMethods

#cast, #cast_numeric, #cast_string

Methods included from SQL::BooleanMethods

#~

Methods included from SQL::AliasMethods

#as

Constructor Details

This class inherits a constructor from Sequel::Dataset

Instance Method Details

#fetch_rows(sql) ⇒ Object


225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# File 'lib/sequel/adapters/ado.rb', line 225

def fetch_rows(sql)
  execute(sql) do |recordset|
    cols = []
    conversion_procs = db.conversion_procs

    i = -1
    ts_cp = nil
    recordset.Fields.each do |field|
      type = field.Type
      cp = if type == AdDBTimeStamp
        ts_cp ||= begin
          nsec_div = 1000000000.0/(10**(timestamp_precision))
          nsec_mul = 10**(timestamp_precision+3)
          meth = db.method(:to_application_timestamp)
          lambda do |v|
            # Fractional second handling is not correct on ruby <2.2
            meth.call([v.year, v.month, v.day, v.hour, v.min, v.sec, (v.nsec/nsec_div).round * nsec_mul])
          end
        end
      else
        conversion_procs[type]
      end
      cols << [output_identifier(field.Name), cp, i+=1]
    end

    self.columns = cols.map(&:first)
    return if recordset.EOF

    recordset.GetRows.transpose.each do |field_values|
      h = {}

      cols.each do |name, cp, i|
        h[name] = if (v = field_values[i]) && cp
          cp[v]
        else
          v
        end
      end
      
      yield h
    end
  end
end

#provides_accurate_rows_matched?Boolean

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

Returns:

  • (Boolean)

270
271
272
# File 'lib/sequel/adapters/ado.rb', line 270

def provides_accurate_rows_matched?
  false
end