Class: Sequel::Postgres::Adapter

Inherits:
PGconn
  • Object
show all
Includes:
AdapterMethods
Defined in:
lib/sequel_core/adapters/postgres.rb

Overview

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

Constant Summary

Constants included from AdapterMethods

Sequel::Postgres::AdapterMethods::SELECT_CURRVAL, Sequel::Postgres::AdapterMethods::SELECT_CUSTOM_SEQUENCE, Sequel::Postgres::AdapterMethods::SELECT_PK, Sequel::Postgres::AdapterMethods::SELECT_SERIAL_SEQUENCE

Instance Attribute Summary

Attributes included from AdapterMethods

#db, #transaction_depth

Instance Method Summary collapse

Methods included from AdapterMethods

#last_insert_id, #primary_key, #sequence

Instance Method Details

#apply_connection_settingsObject

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.



128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/sequel_core/adapters/postgres.rb', line 128

def apply_connection_settings
  super
  if Postgres.use_iso_date_format
    sql = "SET DateStyle = 'ISO'"
    @db.log_info(sql)
    execute(sql)
  end
  if cmm = Postgres.client_min_messages
    sql = "SET client_min_messages = '#{cmm.to_s.upcase}'"
    @db.log_info(sql)
    execute(sql)
  end
end

#execute(sql, args = nil) ⇒ Object

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



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/sequel_core/adapters/postgres.rb', line 144

def execute(sql, args=nil)
  q = nil
  begin
    q = args ? async_exec(sql, args) : async_exec(sql)
  rescue PGError
    begin
      s = status
    rescue PGError
      raise(Sequel::DatabaseDisconnectError)
    end
    status_ok = (s == Adapter::CONNECTION_OK)
    status_ok ? raise : raise(Sequel::DatabaseDisconnectError)
  ensure
    block if status_ok
  end
  begin
    block_given? ? yield(q) : q.cmd_tuples
  ensure
    q.clear
  end
end

#prepared_statementsObject

Hash of prepared statements for this connection. Keys are string names of the server side prepared statement, and values are SQL strings.



176
177
178
# File 'lib/sequel_core/adapters/postgres.rb', line 176

def prepared_statements
  @prepared_statements ||= {}
end

#reset(*args, &block) ⇒ Object

Reapply the connection settings if the connection is reset.



167
168
169
170
# File 'lib/sequel_core/adapters/postgres.rb', line 167

def reset(*args, &block)
  super(*args, &block)
  apply_connection_settings
end