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.



123
124
125
126
127
128
129
130
# File 'lib/sequel_core/adapters/postgres.rb', line 123

def apply_connection_settings
  super
  if Postgres.use_iso_date_format
    sql = "SET DateStyle = 'ISO'"
    @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.



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/sequel_core/adapters/postgres.rb', line 134

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.



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

def prepared_statements
  @prepared_statements ||= {}
end

#reset(*args, &block) ⇒ Object

Reapply the connection settings if the connection is reset.



157
158
159
160
# File 'lib/sequel_core/adapters/postgres.rb', line 157

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