/usr/lib/ruby/vendor_ruby/sequel/adapters/jdbc/postgresql.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 | Sequel.require 'adapters/shared/postgres'
module Sequel
Postgres::CONVERTED_EXCEPTIONS << NativeException
module JDBC
# Adapter, Database, and Dataset support for accessing a PostgreSQL
# database via JDBC.
module Postgres
# Methods to add to the JDBC adapter/connection to allow it to work
# with the shared PostgreSQL code.
module AdapterMethods
include Sequel::Postgres::AdapterMethods
# Give the JDBC adapter a direct execute method, which creates
# a statement with the given sql and executes it.
def execute(sql, args=nil)
method = block_given? ? :executeQuery : :execute
@db.send(:statement, self) do |stmt|
rows = @db.log_yield(sql){stmt.send(method, sql)}
yield(rows) if block_given?
end
end
private
# JDBC specific method of getting specific values from a result set.
def single_value(r)
unless r.nil?
r.next
r.getString(1) unless r.getRow == 0
end
end
end
# Methods to add to Database instances that access PostgreSQL via
# JDBC.
module DatabaseMethods
include Sequel::Postgres::DatabaseMethods
# Add the primary_keys and primary_key_sequences instance variables,
# so we can get the correct return values for inserted rows.
def self.extended(db)
db.instance_eval do
@primary_keys = {}
@primary_key_sequences = {}
end
end
private
# Use setNull for nil arguments as the default behavior of setString
# with nil doesn't appear to work correctly on PostgreSQL.
def set_ps_arg(cps, arg, i)
arg.nil? ? cps.setNull(i, JavaSQL::Types::NULL) : super
end
# Extend the adapter with the JDBC PostgreSQL AdapterMethods
def setup_connection(conn)
conn = super(conn)
conn.extend(Sequel::JDBC::Postgres::AdapterMethods)
conn.db = self
conn.apply_connection_settings
conn
end
# Call insert_result with the table and values specified in the opts.
def last_insert_id(conn, opts)
insert_result(conn, opts[:table], opts[:values])
end
end
# Dataset subclass used for datasets that connect to PostgreSQL via JDBC.
class Dataset < JDBC::Dataset
include Sequel::Postgres::DatasetMethods
APOS = Dataset::APOS
# Add the shared PostgreSQL prepared statement methods
def prepare(*args)
ps = super
ps.extend(::Sequel::Postgres::DatasetMethods::PreparedStatementMethods)
ps
end
# Literalize strings similar to the native postgres adapter
def literal_string_append(sql, v)
sql << APOS << db.synchronize{|c| c.escape_string(v)} << APOS
end
end
end
end
end
|