Class Sequel::Adapter
In: lib/sequel/adapters/postgres.rb
Parent: ::PGconn

PGconn subclass for connection specific methods used with the pg, postgres, or postgres-pr driver.

Methods

Included Modules

Sequel::Postgres::AdapterMethods

Constants

DISCONNECT_ERROR_RE = /\Acould not receive data from server: Software caused connection abort/

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

Apply connection settings for this connection. Current sets the date style to ISO in order make Date object creation in ruby faster, if Postgres.use_iso_date_format is true.

[Source]

     # File lib/sequel/adapters/postgres.rb, line 148
148:       def apply_connection_settings
149:         super
150:         if Postgres.use_iso_date_format
151:           sql = "SET DateStyle = 'ISO'"
152:           execute(sql)
153:         end
154:         @prepared_statements = {} if SEQUEL_POSTGRES_USES_PG
155:       end

Raise a Sequel::DatabaseDisconnectError if a PGError is raised and the connection status cannot be determined or it is not OK.

[Source]

     # File lib/sequel/adapters/postgres.rb, line 159
159:       def check_disconnect_errors
160:         begin
161:           yield
162:         rescue PGError =>e
163:           disconnect = false
164:           begin
165:             s = status
166:           rescue PGError
167:             disconnect = true
168:           end
169:           status_ok = (s == Adapter::CONNECTION_OK)
170:           disconnect ||= !status_ok
171:           disconnect ||= e.message =~ DISCONNECT_ERROR_RE
172:           disconnect ? raise(Sequel.convert_exception_class(e, Sequel::DatabaseDisconnectError)) : raise
173:         ensure
174:           block if status_ok
175:         end
176:       end

Execute the given SQL with this connection. If a block is given, yield the results, otherwise, return the number of changed rows.

[Source]

     # File lib/sequel/adapters/postgres.rb, line 180
180:       def execute(sql, args=nil)
181:         q = check_disconnect_errors{@db.log_yield(sql, args){args ? async_exec(sql, args) : async_exec(sql)}}
182:         begin
183:           block_given? ? yield(q) : q.cmd_tuples
184:         ensure
185:           q.clear if q
186:         end
187:       end

[Validate]