PGconn subclass for connection specific methods used with the pg, postgres, or postgres-pr driver.
Constants
DISCONNECT_ERROR_RE | = | /\Acould not receive data from server/ |
Attributes
prepared_statements | [R] |
Hash of prepared statements for this connection. Keys are string names of the server side prepared statement, and values are SQL strings. |
Public Instance methods
check_disconnect_errors
()
Raise a Sequel::DatabaseDisconnectError if a PGError is raised and the connection status cannot be determined or it is not OK.
[show source]
# File lib/sequel/adapters/postgres.rb, line 122 def check_disconnect_errors begin yield rescue PGError => e disconnect = false begin s = status rescue PGError disconnect = true end status_ok = (s == Adapter::CONNECTION_OK) disconnect ||= !status_ok 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)) ensure block if status_ok && !disconnect end end
execute
(sql, args=nil)
Execute the given SQL with this connection. If a block is given, yield the results, otherwise, return the number of changed rows.
[show source]
# File lib/sequel/adapters/postgres.rb, line 146 def execute(sql, args=nil) args = args.map{|v| @db.bound_variable_arg(v, self)} if args q = check_disconnect_errors{execute_query(sql, args)} begin block_given? ? yield(q) : q.cmd_tuples ensure q.clear if q && q.respond_to?(:clear) end end