module Sequel::Oracle::DatabaseMethods

Constants

AUTOINCREMENT
DATABASE_ERROR_REGEXPS
IGNORE_OWNERS
TEMPORARY
TRANSACTION_ISOLATION_LEVELS

Attributes

autosequence[RW]

Public Instance Methods

create_sequence(name, opts=OPTS) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 24
def create_sequence(name, opts=OPTS)
  self << create_sequence_sql(name, opts)
end
create_trigger(*args) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 28
def create_trigger(*args)
  self << create_trigger_sql(*args)
end
current_user() click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 32
def current_user
  @current_user ||= metadata_dataset.get{sys_context('USERENV', 'CURRENT_USER')}
end
database_type() click to toggle source

Oracle uses the :oracle database type

# File lib/sequel/adapters/shared/oracle.rb, line 41
def database_type
  :oracle
end
drop_sequence(name) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 36
def drop_sequence(name)
  self << drop_sequence_sql(name)
end
foreign_key_list(table, opts=OPTS) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 45
def foreign_key_list(table, opts=OPTS)
  m = output_identifier_meth
  im = input_identifier_meth
  schema, table = schema_and_table(table)
  ds = metadata_dataset.
    from{[all_cons_columns.as(:pc), all_constraints.as(:p), all_cons_columns.as(:fc), all_constraints.as(:f)]}.
    where{{
      f[:table_name]=>im.call(table),
      f[:constraint_type]=>'R',
      p[:owner]=>f[:r_owner],
      p[:constraint_name]=>f[:r_constraint_name],
      pc[:owner]=>p[:owner],
      pc[:constraint_name]=>p[:constraint_name],
      pc[:table_name]=>p[:table_name],
      fc[:owner]=>f[:owner],
      fc[:constraint_name]=>f[:constraint_name],
      fc[:table_name]=>f[:table_name],
      fc[:position]=>pc[:position]}}.
    select{[p[:table_name].as(:table), pc[:column_name].as(:key), fc[:column_name].as(:column), f[:constraint_name].as(:name)]}.
    order{[:table, fc[:position]]}
  ds = ds.where{{f[:schema_name]=>im.call(schema)}} if schema

  fks = {}
  ds.each do |r|
    if fk = fks[r[:name]]
      fk[:columns] << m.call(r[:column])
      fk[:key] << m.call(r[:key])
    else
      fks[r[:name]] = {:name=>m.call(r[:name]), :columns=>[m.call(r[:column])], :table=>m.call(r[:table]), :key=>[m.call(r[:key])]}
    end
  end
  fks.values
end
freeze() click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 79
def freeze
  current_user
  server_version
  @conversion_procs.freeze
  super
end
global_index_namespace?() click to toggle source

Oracle namespaces indexes per table.

# File lib/sequel/adapters/shared/oracle.rb, line 87
def global_index_namespace?
  false
end
server_version(server=nil) click to toggle source

The version of the Oracle server, used for determining capability.

# File lib/sequel/adapters/shared/oracle.rb, line 121
def server_version(server=nil)
  return @server_version if @server_version
  @server_version = synchronize(server) do |conn|
    (conn.server_version rescue nil) if conn.respond_to?(:server_version)
  end
  unless @server_version
    @server_version = if m = /(\d+)\.(\d+)\.?(\d+)?\.?(\d+)?/.match(fetch("select version from PRODUCT_COMPONENT_VERSION where lower(product) like 'oracle%'").single_value)
      (m[1].to_i*1000000) + (m[2].to_i*10000) + (m[3].to_i*100) + m[4].to_i
    else
      0
    end
  end
  @server_version
end
supports_deferrable_constraints?() click to toggle source

Oracle supports deferrable constraints.

# File lib/sequel/adapters/shared/oracle.rb, line 138
def supports_deferrable_constraints?
  true
end
supports_transaction_isolation_levels?() click to toggle source

Oracle supports transaction isolation levels.

# File lib/sequel/adapters/shared/oracle.rb, line 143
def supports_transaction_isolation_levels?
  true
end
tables(opts=OPTS) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 93
def tables(opts=OPTS)
  m = output_identifier_meth
  metadata_dataset.from(:all_tables).
    server(opts[:server]).
    where(:dropped=>'NO').
    exclude(:owner=>IGNORE_OWNERS).
    select(:table_name).
    map{|r| m.call(r[:table_name])}
end
view_exists?(name) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 112
def view_exists?(name) 
  m = input_identifier_meth
  metadata_dataset.from(:all_views).
    exclude(:owner=>IGNORE_OWNERS).
    where(:view_name=>m.call(name)).
    count > 0
end
views(opts=OPTS) click to toggle source
# File lib/sequel/adapters/shared/oracle.rb, line 103
def views(opts=OPTS) 
  m = output_identifier_meth
  metadata_dataset.from(:all_views).
    server(opts[:server]).
    exclude(:owner=>IGNORE_OWNERS).
    select(:view_name).
    map{|r| m.call(r[:view_name])}
end