/usr/lib/ruby/vendor_ruby/sequel/adapters/jdbc/oracle.rb is in ruby-sequel 3.33.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 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 113 | Sequel.require 'adapters/shared/oracle'
Sequel.require 'adapters/jdbc/transactions'
module Sequel
module JDBC
# Database and Dataset support for Oracle databases accessed via JDBC.
module Oracle
# Instance methods for Oracle Database objects accessed via JDBC.
module DatabaseMethods
PRIMARY_KEY_INDEX_RE = /\Asys_/i.freeze
include Sequel::Oracle::DatabaseMethods
include Sequel::JDBC::Transactions
def self.extended(db)
db.instance_eval do
@autosequence = opts[:autosequence]
@primary_key_sequences = {}
end
end
private
def last_insert_id(conn, opts)
unless sequence = opts[:sequence]
if t = opts[:table]
sequence = sequence_for_table(t)
end
end
if sequence
sql = "SELECT #{literal(sequence)}.currval FROM dual"
statement(conn) do |stmt|
begin
rs = log_yield(sql){stmt.executeQuery(sql)}
rs.next
rs.getInt(1)
rescue java.sql.SQLException
nil
end
end
end
end
# Primary key indexes appear to start with sys_ on Oracle
def primary_key_index_re
PRIMARY_KEY_INDEX_RE
end
def schema_parse_table(*)
sch = super
sch.each do |c, s|
if s[:type] == :decimal && s[:scale] == -127
s[:type] = :integer
elsif s[:db_type] == 'DATE'
s[:type] = :datetime
end
end
sch
end
def schema_parse_table_skip?(h, schema)
super || (h[:table_schem] != current_user unless schema)
end
# As of Oracle 9.2, releasing savepoints is no longer supported.
def supports_releasing_savepoints?
false
end
end
# Dataset class for Oracle datasets accessed via JDBC.
class Dataset < JDBC::Dataset
include Sequel::Oracle::DatasetMethods
private
JAVA_BIG_DECIMAL = ::Sequel::JDBC::Dataset::JAVA_BIG_DECIMAL
class ::Sequel::JDBC::Dataset::TYPE_TRANSLATOR
def oracle_decimal(v)
if v.scale == 0
i = v.long_value
if v.equals(JAVA_BIG_DECIMAL.new(i))
i
else
decimal(v)
end
else
decimal(v)
end
end
end
ORACLE_DECIMAL_METHOD = TYPE_TRANSLATOR_INSTANCE.method(:oracle_decimal)
def convert_type_oracle_timestamp(v)
db.to_application_timestamp(v.to_string)
end
def convert_type_proc(v)
case v
when JAVA_BIG_DECIMAL
ORACLE_DECIMAL_METHOD
when Java::OracleSql::TIMESTAMP
method(:convert_type_oracle_timestamp)
else
super
end
end
end
end
end
end
|