Class: Sequel::IBMDB::Dataset

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

Defined Under Namespace

Modules: CallableStatementMethods

Constant Summary collapse

PreparedStatementMethods =
prepared_statements_module(:prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper)

Constants included from DB2::DatasetMethods

DB2::DatasetMethods::BITWISE_METHOD_MAP

Constants included from Dataset::ColumnsLimit1

Dataset::ColumnsLimit1::COLUMNS_CLONE_OPTIONS

Instance Method Summary collapse

Methods included from DB2::DatasetMethods

#cast_sql_append, #complex_expression_sql_append, #quote_identifiers?, #supports_cte?, #supports_group_cube?, #supports_group_rollup?, #supports_grouping_sets?, #supports_is_true?, #supports_lateral_subqueries?, #supports_merge?, #supports_multiple_column_in?, #supports_select_all_and_column?, #supports_where_true?, #supports_window_functions?

Methods included from Dataset::ColumnsLimit1

#columns!

Methods included from EmulateOffsetWithRowNumber

#empty?, #select_sql, #supports_offsets_in_correlated_subqueries?

Instance Method Details

#convert_smallint_to_boolObject

Whether to convert smallint to boolean arguments for this dataset. Defaults to the Database setting.



375
376
377
# File 'lib/sequel/adapters/ibmdb.rb', line 375

def convert_smallint_to_bool
  opts.has_key?(:convert_smallint_to_bool) ? opts[:convert_smallint_to_bool] : db.convert_smallint_to_bool
end

#fetch_rows(sql) ⇒ Object



384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
# File 'lib/sequel/adapters/ibmdb.rb', line 384

def fetch_rows(sql)
  execute(sql) do |stmt|
    columns = []
    convert = convert_smallint_to_bool
    cps = db.conversion_procs
    stmt.num_fields.times do |i|
      k = stmt.field_name i
      key = output_identifier(k)
      type = stmt.field_type(i).downcase.to_sym
      # decide if it is a smallint from precision
      type = :boolean  if type == :int && convert && stmt.field_precision(i) < 8
      type = :blob if type == :clob && db.use_clob_as_blob
      columns << [key, cps[type]]
    end
    cols = columns.map{|c| c[0]}
    self.columns = cols

    while res = stmt.fetch_array
      row = {}
      res.zip(columns).each do |v, (k, pr)|
        row[k] = ((pr ? pr.call(v) : v) if v)
      end
      yield row
    end
  end
  self
end

#with_convert_smallint_to_bool(v) ⇒ Object

Return a cloned dataset with the convert_smallint_to_bool option set.



380
381
382
# File 'lib/sequel/adapters/ibmdb.rb', line 380

def with_convert_smallint_to_bool(v)
  clone(:convert_smallint_to_bool=>v)
end