Class: ActiveRecord::ConnectionAdapters::OracleEnhancedOCIConnection
- Inherits:
-
OracleEnhancedConnection
- Object
- OracleEnhancedConnection
- ActiveRecord::ConnectionAdapters::OracleEnhancedOCIConnection
- Defined in:
- lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb
Overview
OCI database interface for MRI
Instance Attribute Summary
Attributes inherited from OracleEnhancedConnection
Instance Method Summary collapse
- #active? ⇒ Boolean
- #auto_retry ⇒ Object
- #auto_retry=(value) ⇒ Object
- #autocommit=(value) ⇒ Object
- #autocommit? ⇒ Boolean
- #commit ⇒ Object
- #describe(name) ⇒ Object
-
#error_code(exception) ⇒ Object
Return OCIError error code.
- #exec(sql, *bindvars, &block) ⇒ Object
-
#initialize(config) ⇒ OracleEnhancedOCIConnection
constructor
:nodoc:.
- #logoff ⇒ Object
-
#ping ⇒ Object
Checks connection, returns true if active.
- #reset! ⇒ Object
- #rollback ⇒ Object
- #select(sql, name = nil, return_column_names = false) ⇒ Object
- #write_lob(lob, value, is_binary = false) ⇒ Object
Methods inherited from OracleEnhancedConnection
Constructor Details
#initialize(config) ⇒ OracleEnhancedOCIConnection
:nodoc:
29 30 31 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 29 def initialize(config) @raw_connection = OCI8EnhancedAutoRecover.new(config, OracleEnhancedOCIFactory) end |
Instance Method Details
#active? ⇒ Boolean
71 72 73 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 71 def active? @raw_connection.active? end |
#auto_retry ⇒ Object
33 34 35 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 33 def auto_retry @raw_connection.auto_retry if @raw_connection end |
#auto_retry=(value) ⇒ Object
37 38 39 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 37 def auto_retry=(value) @raw_connection.auto_retry = value if @raw_connection end |
#autocommit=(value) ⇒ Object
58 59 60 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 58 def autocommit=(value) @raw_connection.autocommit = value end |
#autocommit? ⇒ Boolean
54 55 56 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 54 def autocommit? @raw_connection.autocommit? end |
#commit ⇒ Object
46 47 48 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 46 def commit @raw_connection.commit end |
#describe(name) ⇒ Object
118 119 120 121 122 123 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 118 def describe(name) quoted_name = OracleEnhancedAdapter.valid_table_name?(name) ? name : "\"#{name}\"" @raw_connection.describe(quoted_name) rescue OCIException => e raise OracleEnhancedConnectionException, e. end |
#error_code(exception) ⇒ Object
Return OCIError error code
126 127 128 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 126 def error_code(exception) exception.code end |
#exec(sql, *bindvars, &block) ⇒ Object
81 82 83 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 81 def exec(sql, *bindvars, &block) @raw_connection.exec(sql, *bindvars, &block) end |
#logoff ⇒ Object
41 42 43 44 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 41 def logoff @raw_connection.logoff @raw_connection.active = false end |
#ping ⇒ Object
Checks connection, returns true if active. Note that ping actively checks the connection, while #active? simply returns the last known state.
65 66 67 68 69 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 65 def ping @raw_connection.ping rescue OCIException => e raise OracleEnhancedConnectionException, e. end |
#reset! ⇒ Object
75 76 77 78 79 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 75 def reset! @raw_connection.reset! rescue OCIException => e raise OracleEnhancedConnectionException, e. end |
#rollback ⇒ Object
50 51 52 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 50 def rollback @raw_connection.rollback end |
#select(sql, name = nil, return_column_names = false) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 85 def select(sql, name = nil, return_column_names = false) cursor = @raw_connection.exec(sql) cols = [] # Ignore raw_rnum_ which is used to simulate LIMIT and OFFSET cursor.get_col_names.each do |col_name| col_name = oracle_downcase(col_name) cols << col_name unless col_name == 'raw_rnum_' end # Reuse the same hash for all rows column_hash = {} cols.each {|c| column_hash[c] = nil} rows = [] get_lob_value = !(name == 'Writable Large Object') while row = cursor.fetch hash = column_hash.dup cols.each_with_index do |col, i| hash[col] = typecast_result_value(row[i], get_lob_value) end rows << hash end return_column_names ? [rows, cols] : rows ensure cursor.close if cursor end |
#write_lob(lob, value, is_binary = false) ⇒ Object
114 115 116 |
# File 'lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb', line 114 def write_lob(lob, value, is_binary = false) lob.write value end |