class Sequel::Fdbsql::Connection
Connection specific methods for Fdbsql with pg
Constants
- DISCONNECT_ERROR_RE
Regular expression for error messages that note that the connection is closed.
Attributes
Public Class Methods
new(db, opts)
click to toggle source
Create a new connection to the FoundationDB SQL Layer. See Sequel::Fdbsql::Database#connect.
Calls superclass method
# File lib/sequel/adapters/fdbsql.rb, line 213 def initialize(db, opts) connect_opts = { :host => opts[:host] || 'localhost', :port => opts[:port] || 15432, :dbname => opts[:database], :user => opts[:user], :password => opts[:password], :hostaddr => opts[:hostaddr], :connect_timeout => opts[:connect_timeout] || 20, :sslmode => opts[:sslmode] }.delete_if{|key, value| value.nil? or (value.respond_to?(:empty?) and value.empty?)} super(connect_opts) @db = db @prepared_statements = {} if opts[:notice_receiver] set_notice_receiver(opts[:notice_receiver]) else # Swallow warnings set_notice_receiver{|proc| } end end
Public Instance Methods
close()
click to toggle source
Close the connection.
Calls superclass method
# File lib/sequel/adapters/fdbsql.rb, line 238 def close super rescue PGError, IOError end
execute(sql, args=nil) { |q| ... }
click to toggle source
Execute the given SQL with this connection. If a block is given, yield the results, otherwise, return the number of changed rows.
# File lib/sequel/adapters/fdbsql.rb, line 245 def execute(sql, args=nil) q = query(sql, args) block_given? ? yield(q) : q.cmd_tuples end
execute_prepared_statement(name, args)
click to toggle source
Execute the prepared statement of the given name, binding the given args.
# File lib/sequel/adapters/fdbsql.rb, line 252 def execute_prepared_statement(name, args) check_disconnect_errors{exec_prepared(name, args)} end
prepare(name, sql)
click to toggle source
Prepare a statement for later use.
Calls superclass method
# File lib/sequel/adapters/fdbsql.rb, line 257 def prepare(name, sql) check_disconnect_errors{super} end
query(sql, args=nil)
click to toggle source
Execute the given query and return the results.
Calls superclass method
# File lib/sequel/adapters/fdbsql.rb, line 262 def query(sql, args=nil) args = args.map{|v| @db.bound_variable_arg(v, self)} if args check_disconnect_errors{super} end
Private Instance Methods
check_disconnect_errors() { || ... }
click to toggle source
Raise a Sequel::DatabaseDisconnectError if a PGError is raised and the connection status cannot be determined or it is not OK.
# File lib/sequel/adapters/fdbsql.rb, line 271 def check_disconnect_errors begin yield rescue PGError => e disconnect = false disconnect ||= e.message =~ DISCONNECT_ERROR_RE disconnect ? raise(Sequel.convert_exception_class(e, Sequel::DatabaseDisconnectError)) : raise rescue IOError, Errno::EPIPE, Errno::ECONNRESET => e disconnect = true raise(Sequel.convert_exception_class(e, Sequel::DatabaseDisconnectError)) end end