Class/Module Index [+]

Quicksearch

Sequel::Oracle::DatasetMethods

Public Instance Methods

complex_expression_sql_append(sql, op, args) click to toggle source

Oracle needs to emulate bitwise operators and ILIKE/NOT ILIKE operators.

# File lib/sequel/adapters/shared/oracle.rb, line 209
def complex_expression_sql_append(sql, op, args)
  case op
  when :&
    sql << complex_expression_arg_pairs(args){|a, b| "CAST(BITAND(#{literal(a)}, #{literal(b)}) AS INTEGER)"}
  when :|
    sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} - #{complex_expression_sql(:&, [a, b])} + #{literal(b)})"}
  when :^
    sql << complex_expression_arg_pairs(args){|*x| "(#{complex_expression_sql(:|, x)} - #{complex_expression_sql(:&, x)})"}
  when :'B~'
    sql << BITCOMP_OPEN
    literal_append(sql, args.at(0))
    sql << BITCOMP_CLOSE
  when :<<
    sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} * power(2, #{literal b}))"}
  when :>>
    sql << complex_expression_arg_pairs(args){|a, b| "(#{literal(a)} / power(2, #{literal b}))"}
  when :%
    sql << complex_expression_arg_pairs(args){|a, b| "MOD(#{literal(a)}, #{literal(b)})"}
  when :ILIKE, :'NOT ILIKE'
    sql << ILIKE_0
    literal_append(sql, args.at(0))
    sql << ILIKE_1
    sql << (op == :ILIKE ? LIKE : NOT_LIKE)
    sql<< ILIKE_2
    literal_append(sql, args.at(1))
    sql << ILIKE_3
  else
    super
  end
end
constant_sql_append(sql, c) click to toggle source

Oracle doesn't support CURRENT_TIME, as it doesn't have a type for storing just time values without a date, so use CURRENT_TIMESTAMP in its place.

# File lib/sequel/adapters/shared/oracle.rb, line 243
def constant_sql_append(sql, c)
  if c == :CURRENT_TIME
    super(sql, :CURRENT_TIMESTAMP)
  else
    super
  end
end
empty?() click to toggle source

Use a custom expression with EXISTS to determine whether a dataset is empty.

# File lib/sequel/adapters/shared/oracle.rb, line 260
def empty?
  db[:dual].where(@opts[:offset] ? exists : unordered.exists).get(1) == nil
end
except(dataset, opts={}) click to toggle source

Oracle uses MINUS instead of EXCEPT, and doesn't support EXCEPT ALL

# File lib/sequel/adapters/shared/oracle.rb, line 252
def except(dataset, opts={})
  opts = {:all=>opts} unless opts.is_a?(Hash)
  raise(Sequel::Error, "EXCEPT ALL not supported") if opts[:all]
  compound_clone(:minus, dataset, opts)
end
recursive_cte_requires_column_aliases?() click to toggle source

Oracle requires recursive CTEs to have column aliases.

# File lib/sequel/adapters/shared/oracle.rb, line 292
def recursive_cte_requires_column_aliases?
  true
end
requires_sql_standard_datetimes?() click to toggle source

Oracle requires SQL standard datetimes

# File lib/sequel/adapters/shared/oracle.rb, line 265
def requires_sql_standard_datetimes?
  true
end
select_sql() click to toggle source

Handle LIMIT by using a unlimited subselect filtered with ROWNUM.

# File lib/sequel/adapters/shared/oracle.rb, line 277
def select_sql
  if (limit = @opts[:limit]) && !@opts[:sql]
    ds = clone(:limit=>nil)
    # Lock doesn't work in subselects, so don't use a subselect when locking.
    # Don't use a subselect if custom SQL is used, as it breaks somethings.
    ds = ds.from_self unless @opts[:lock]
    sql = @opts[:append_sql] || ''
    subselect_sql_append(sql, ds.where(SQL::ComplexExpression.new(:<=, ROW_NUMBER_EXPRESSION, limit)))
    sql
  else
    super
  end
end
sequence(s) click to toggle source

Create a copy of this dataset associated to the given sequence name, which will be used when calling insert to find the most recently inserted value for the sequence.

# File lib/sequel/adapters/shared/oracle.rb, line 272
def sequence(s)
  clone(:sequence=>s)
end
supports_group_cube?() click to toggle source

Oracle supports GROUP BY CUBE

# File lib/sequel/adapters/shared/oracle.rb, line 297
def supports_group_cube?
  true
end
supports_group_rollup?() click to toggle source

Oracle supports GROUP BY ROLLUP

# File lib/sequel/adapters/shared/oracle.rb, line 302
def supports_group_rollup?
  true
end
supports_intersect_except_all?() click to toggle source

Oracle does not support INTERSECT ALL or EXCEPT ALL

# File lib/sequel/adapters/shared/oracle.rb, line 307
def supports_intersect_except_all?
  false
end
supports_is_true?() click to toggle source

Oracle does not support IS TRUE.

# File lib/sequel/adapters/shared/oracle.rb, line 312
def supports_is_true?
  false
end
supports_select_all_and_column?() click to toggle source

Oracle does not support SELECT *, column

# File lib/sequel/adapters/shared/oracle.rb, line 317
def supports_select_all_and_column?
  false
end
supports_timestamp_timezones?() click to toggle source

Oracle supports timezones in literal timestamps.

# File lib/sequel/adapters/shared/oracle.rb, line 322
def supports_timestamp_timezones?
  true
end
supports_where_true?() click to toggle source

Oracle does not support WHERE 'Y' for WHERE TRUE.

# File lib/sequel/adapters/shared/oracle.rb, line 327
def supports_where_true?
  false
end
supports_window_functions?() click to toggle source

Oracle supports window functions

# File lib/sequel/adapters/shared/oracle.rb, line 332
def supports_window_functions?
  true
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.