Module | Sequel::Oracle::DatabaseMethods |
In: |
lib/sequel/adapters/shared/oracle.rb
|
IGNORE_OWNERS | = | %w'APEX_040000 CTXSYS EXFSYS MDSYS OLAPSYS ORDDATA ORDSYS SYS SYSTEM XDB XDBMETADATA XDBPM XFILES WMSYS'.freeze |
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}.freeze |
autosequence | [RW] |
# File lib/sequel/adapters/shared/oracle.rb, line 19 19: def create_sequence(name, opts=OPTS) 20: self << create_sequence_sql(name, opts) 21: end
# File lib/sequel/adapters/shared/oracle.rb, line 23 23: def create_trigger(*args) 24: self << create_trigger_sql(*args) 25: end
# File lib/sequel/adapters/shared/oracle.rb, line 27 27: def current_user 28: @current_user ||= metadata_dataset.get{sys_context('USERENV', 'CURRENT_USER')} 29: end
# File lib/sequel/adapters/shared/oracle.rb, line 31 31: def drop_sequence(name) 32: self << drop_sequence_sql(name) 33: end
# File lib/sequel/adapters/shared/oracle.rb, line 39 39: def foreign_key_list(table, opts=OPTS) 40: m = output_identifier_meth 41: im = input_identifier_meth 42: schema, table = schema_and_table(table) 43: ds = metadata_dataset. 44: from{[all_cons_columns.as(:pc), all_constraints.as(:p), all_cons_columns.as(:fc), all_constraints.as(:f)]}. 45: where{{ 46: f[:table_name]=>im.call(table), 47: f[:constraint_type]=>'R', 48: p[:owner]=>f[:r_owner], 49: p[:constraint_name]=>f[:r_constraint_name], 50: pc[:owner]=>p[:owner], 51: pc[:constraint_name]=>p[:constraint_name], 52: pc[:table_name]=>p[:table_name], 53: fc[:owner]=>f[:owner], 54: fc[:constraint_name]=>f[:constraint_name], 55: fc[:table_name]=>f[:table_name], 56: fc[:position]=>pc[:position]}}. 57: select{[p[:table_name].as(:table), pc[:column_name].as(:key), fc[:column_name].as(:column), f[:constraint_name].as(:name)]}. 58: order{[:table, fc[:position]]} 59: ds = ds.where{{f[:schema_name]=>im.call(schema)}} if schema 60: 61: fks = {} 62: ds.each do |r| 63: if fk = fks[r[:name]] 64: fk[:columns] << m.call(r[:column]) 65: fk[:key] << m.call(r[:key]) 66: else 67: fks[r[:name]] = {:name=>m.call(r[:name]), :columns=>[m.call(r[:column])], :table=>m.call(r[:table]), :key=>[m.call(r[:key])]} 68: end 69: end 70: fks.values 71: end
# File lib/sequel/adapters/shared/oracle.rb, line 73 73: def freeze 74: current_user 75: server_version 76: @conversion_procs.freeze 77: super 78: end
The version of the Oracle server, used for determining capability.
# File lib/sequel/adapters/shared/oracle.rb, line 115 115: def server_version(server=nil) 116: return @server_version if @server_version 117: @server_version = synchronize(server) do |conn| 118: (conn.server_version rescue nil) if conn.respond_to?(:server_version) 119: end 120: unless @server_version 121: @server_version = if m = /(\d+)\.(\d+)\.?(\d+)?\.?(\d+)?/.match(fetch("select version from PRODUCT_COMPONENT_VERSION where lower(product) like 'oracle%'").single_value) 122: (m[1].to_i*1000000) + (m[2].to_i*10000) + (m[3].to_i*100) + m[4].to_i 123: else 124: 0 125: end 126: end 127: @server_version 128: end
# File lib/sequel/adapters/shared/oracle.rb, line 87 87: def tables(opts=OPTS) 88: m = output_identifier_meth 89: metadata_dataset.from(:all_tables). 90: server(opts[:server]). 91: where(:dropped=>'NO'). 92: exclude(:owner=>IGNORE_OWNERS). 93: select(:table_name). 94: map{|r| m.call(r[:table_name])} 95: end
# File lib/sequel/adapters/shared/oracle.rb, line 106 106: def view_exists?(name) 107: m = input_identifier_meth 108: metadata_dataset.from(:all_views). 109: exclude(:owner=>IGNORE_OWNERS). 110: where(:view_name=>m.call(name)). 111: count > 0 112: end