/usr/lib/ruby/vendor_ruby/sequel/adapters/do/postgres.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 | Sequel.require 'adapters/shared/postgres'
module Sequel
Postgres::CONVERTED_EXCEPTIONS << ::DataObjects::Error
module DataObjects
# Adapter, Database, and Dataset support for accessing a PostgreSQL
# database via DataObjects.
module Postgres
# Methods to add to the DataObjects adapter/connection to allow it to work
# with the shared PostgreSQL code.
module AdapterMethods
include Sequel::Postgres::AdapterMethods
# Give the DataObjects adapter a direct execute method, which creates
# a statement with the given sql and executes it.
def execute(sql, args=nil)
command = create_command(sql)
begin
if block_given?
begin
yield(reader = @db.log_yield(sql){command.execute_reader})
ensure
reader.close if reader
end
else
@db.log_yield(sql){command.execute_non_query}
end
rescue ::DataObjects::Error => e
@db.send(:raise_error, e)
end
end
private
# DataObjects specific method of getting specific values from a result set.
def single_value(reader)
while(reader.next!) do
return reader.values.at(0)
end
end
end
# Methods to add to Database instances that access PostgreSQL via
# DataObjects.
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
# Run the INSERT sql on the database and return the primary key
# for the record.
def execute_insert(sql, opts={})
synchronize(opts[:server]) do |conn|
com = conn.create_command(sql)
log_yield(sql){com.execute_non_query}
insert_result(conn, opts[:table], opts[:values])
end
end
private
# Extend the adapter with the DataObjects PostgreSQL AdapterMethods
def setup_connection(conn)
conn = super(conn)
conn.extend(Sequel::DataObjects::Postgres::AdapterMethods)
conn.db = self
conn.apply_connection_settings
conn
end
end
# Dataset subclass used for datasets that connect to PostgreSQL via DataObjects.
class Dataset < DataObjects::Dataset
include Sequel::Postgres::DatasetMethods
end
end
end
end
|