Module: Sequel::DB2::DatasetMethods

Includes:
Sequel::Dataset::ColumnsLimit1, EmulateOffsetWithRowNumber
Included in:
IBMDB::Dataset
Defined in:
lib/sequel/adapters/shared/db2.rb

Constant Summary collapse

BITWISE_METHOD_MAP =
{:& =>:BITAND, :| => :BITOR, :^ => :BITXOR, :'B~'=>:BITNOT}.freeze

Constants included from Sequel::Dataset::ColumnsLimit1

Sequel::Dataset::ColumnsLimit1::COLUMNS_CLONE_OPTIONS

Instance Method Summary collapse

Methods included from Sequel::Dataset::ColumnsLimit1

#columns!

Methods included from EmulateOffsetWithRowNumber

#empty?, #select_sql, #supports_offsets_in_correlated_subqueries?

Instance Method Details

#cast_sql_append(sql, expr, type) ⇒ Object

DB2 casts strings using RTRIM and CHAR instead of VARCHAR.



294
295
296
297
298
299
300
301
302
# File 'lib/sequel/adapters/shared/db2.rb', line 294

def cast_sql_append(sql, expr, type)
  if(type == String)
    sql << "RTRIM(CHAR("
    literal_append(sql, expr)
    sql << "))"
  else
    super
  end
end

#complex_expression_sql_append(sql, op, args) ⇒ Object



304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
# File 'lib/sequel/adapters/shared/db2.rb', line 304

def complex_expression_sql_append(sql, op, args)
  case op
  when :&, :|, :^, :%, :<<, :>>
    complex_expression_emulate_append(sql, op, args)
  when :'B~'
    literal_append(sql, SQL::Function.new(:BITNOT, *args))
  when :extract
    sql << args[0].to_s
    sql << '('
    literal_append(sql, args[1])
    sql << ')'
  else
    super
  end
end

#quote_identifiers?Boolean

Returns:

  • (Boolean)


320
321
322
# File 'lib/sequel/adapters/shared/db2.rb', line 320

def quote_identifiers?
  @opts.fetch(:quote_identifiers, false)
end

#supports_cte?(type = :select) ⇒ Boolean

Returns:

  • (Boolean)


324
325
326
# File 'lib/sequel/adapters/shared/db2.rb', line 324

def supports_cte?(type=:select)
  type == :select
end

#supports_group_cube?Boolean

DB2 supports GROUP BY CUBE

Returns:

  • (Boolean)


329
330
331
# File 'lib/sequel/adapters/shared/db2.rb', line 329

def supports_group_cube?
  true
end

#supports_group_rollup?Boolean

DB2 supports GROUP BY ROLLUP

Returns:

  • (Boolean)


334
335
336
# File 'lib/sequel/adapters/shared/db2.rb', line 334

def supports_group_rollup?
  true
end

#supports_grouping_sets?Boolean

DB2 supports GROUPING SETS

Returns:

  • (Boolean)


339
340
341
# File 'lib/sequel/adapters/shared/db2.rb', line 339

def supports_grouping_sets?
  true
end

#supports_is_true?Boolean

DB2 does not support IS TRUE.

Returns:

  • (Boolean)


344
345
346
# File 'lib/sequel/adapters/shared/db2.rb', line 344

def supports_is_true?
  false
end

#supports_lateral_subqueries?Boolean

DB2 supports lateral subqueries

Returns:

  • (Boolean)


349
350
351
# File 'lib/sequel/adapters/shared/db2.rb', line 349

def supports_lateral_subqueries?
  true
end

#supports_merge?Boolean

DB2 supports MERGE

Returns:

  • (Boolean)


354
355
356
# File 'lib/sequel/adapters/shared/db2.rb', line 354

def supports_merge?
  true
end

#supports_multiple_column_in?Boolean

DB2 does not support multiple columns in IN.

Returns:

  • (Boolean)


359
360
361
# File 'lib/sequel/adapters/shared/db2.rb', line 359

def supports_multiple_column_in?
  false
end

#supports_select_all_and_column?Boolean

DB2 only allows * in SELECT if it is the only thing being selected.

Returns:

  • (Boolean)


364
365
366
# File 'lib/sequel/adapters/shared/db2.rb', line 364

def supports_select_all_and_column?
  false
end

#supports_where_true?Boolean

DB2 does not support WHERE 1.

Returns:

  • (Boolean)


374
375
376
# File 'lib/sequel/adapters/shared/db2.rb', line 374

def supports_where_true?
  false
end

#supports_window_functions?Boolean

DB2 supports window functions

Returns:

  • (Boolean)


369
370
371
# File 'lib/sequel/adapters/shared/db2.rb', line 369

def supports_window_functions?
  true
end