Module Sequel::Oracle::DatabaseMethods
In: lib/sequel/adapters/shared/oracle.rb

Methods

Constants

TEMPORARY = 'GLOBAL TEMPORARY '.freeze
AUTOINCREMENT = ''.freeze
IGNORE_OWNERS = %w'APEX_040000 CTXSYS EXFSYS MDSYS OLAPSYS ORDDATA ORDSYS SYS SYSTEM XDB XDBMETADATA XDBPM XFILES WMSYS'
DATABASE_ERROR_REGEXPS = { /unique constraint .+ violated/ => UniqueConstraintViolation, /integrity constraint .+ violated/ => ForeignKeyConstraintViolation, /check constraint .+ violated/ => CheckConstraintViolation, /cannot insert NULL into|cannot update .+ to NULL/ => NotNullConstraintViolation, /can't serialize access for this transaction/ => SerializationFailure, }.freeze
TRANSACTION_ISOLATION_LEVELS = {:uncommitted=>'READ COMMITTED'.freeze, :committed=>'READ COMMITTED'.freeze, :repeatable=>'SERIALIZABLE'.freeze, :serializable=>'SERIALIZABLE'.freeze}

Attributes

autosequence  [RW] 

Public Instance methods

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 24
24:       def create_sequence(name, opts=OPTS)
25:         self << create_sequence_sql(name, opts)
26:       end

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 28
28:       def create_trigger(*args)
29:         self << create_trigger_sql(*args)
30:       end

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 32
32:       def current_user
33:         @current_user ||= metadata_dataset.get{sys_context('USERENV', 'CURRENT_USER')}
34:       end

Oracle uses the :oracle database type

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 41
41:       def database_type
42:         :oracle
43:       end

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 36
36:       def drop_sequence(name)
37:         self << drop_sequence_sql(name)
38:       end

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 45
45:       def foreign_key_list(table, opts=OPTS)
46:         m = output_identifier_meth
47:         im = input_identifier_meth
48:         schema, table = schema_and_table(table)
49:         ds = metadata_dataset.
50:           from(:all_cons_columns___pc, :all_constraints___p, :all_cons_columns___fc, :all_constraints___f).
51:           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).
52:           select(:p__table_name___table, :pc__column_name___key, :fc__column_name___column, :f__constraint_name___name).
53:           order(:table, :fc__position)
54:         ds = ds.where(:f__schema_name=>im.call(schema)) if schema
55: 
56:         fks = {}
57:         ds.each do |r|
58:           if fk = fks[r[:name]]
59:             fk[:columns] << m.call(r[:column])
60:             fk[:key] << m.call(r[:key])
61:           else
62:             fks[r[:name]] = {:name=>m.call(r[:name]), :columns=>[m.call(r[:column])], :table=>m.call(r[:table]), :key=>[m.call(r[:key])]}
63:           end
64:         end
65:         fks.values
66:       end

Oracle namespaces indexes per table.

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 69
69:       def global_index_namespace?
70:         false
71:       end

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

[Source]

     # File lib/sequel/adapters/shared/oracle.rb, line 103
103:       def server_version(server=nil)
104:         return @server_version if @server_version
105:         @server_version = synchronize(server) do |conn|
106:           (conn.server_version rescue nil) if conn.respond_to?(:server_version)
107:         end
108:         unless @server_version
109:           @server_version = if m = /(\d+)\.(\d+)\.?(\d+)?\.?(\d+)?/.match(fetch("select version from PRODUCT_COMPONENT_VERSION where lower(product) like 'oracle%'").single_value)
110:             (m[1].to_i*1000000) + (m[2].to_i*10000) + (m[3].to_i*100) + m[4].to_i
111:           else
112:             0
113:           end
114:         end
115:         @server_version
116:       end

Oracle supports deferrable constraints.

[Source]

     # File lib/sequel/adapters/shared/oracle.rb, line 120
120:       def supports_deferrable_constraints?
121:         true
122:       end

Oracle supports transaction isolation levels.

[Source]

     # File lib/sequel/adapters/shared/oracle.rb, line 125
125:       def supports_transaction_isolation_levels?
126:         true
127:       end

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 75
75:       def tables(opts=OPTS)
76:         m = output_identifier_meth
77:         metadata_dataset.from(:all_tables).
78:           server(opts[:server]).
79:           where(:dropped=>'NO').
80:           exclude(:owner=>IGNORE_OWNERS).
81:           select(:table_name).
82:           map{|r| m.call(r[:table_name])}
83:       end

[Source]

     # File lib/sequel/adapters/shared/oracle.rb, line 94
 94:       def view_exists?(name) 
 95:         m = input_identifier_meth
 96:         metadata_dataset.from(:all_views).
 97:           exclude(:owner=>IGNORE_OWNERS).
 98:           where(:view_name=>m.call(name)).
 99:           count > 0
100:       end

[Source]

    # File lib/sequel/adapters/shared/oracle.rb, line 85
85:       def views(opts=OPTS) 
86:         m = output_identifier_meth
87:         metadata_dataset.from(:all_views).
88:           server(opts[:server]).
89:           exclude(:owner=>IGNORE_OWNERS).
90:           select(:view_name).
91:           map{|r| m.call(r[:view_name])}
92:       end

[Validate]