module Sequel::Postgres::StatementCache::DatabaseMethods

Public Class Methods

extended(db) click to toggle source

Setup the after_connect proc for the connection pool to make sure the connection object is extended with the appropriate module. This disconnects any existing connections to ensure that all connections in the pool have been extended appropriately.

# File lib/sequel/extensions/pg_statement_cache.rb, line 277
def self.extended(db)
  # Respect existing after_connect proc if one is present
  pr = db.opts[:after_connect]

  # Set the after_connect proc to extend the adapter with
  # the statement cache support.
  db.pool.after_connect = db.opts[:after_connect] = proc do |c|
    pr.call(c) if pr
    c.extend(AdapterMethods)
  end

  # Disconnect to make sure all connections get set up with
  # statement cache.
  db.disconnect
end

Public Instance Methods

alter_table(*) click to toggle source

Clear statement caches for all connections when altering tables.

Calls superclass method
# File lib/sequel/extensions/pg_statement_cache.rb, line 294
def alter_table(*)
  clear_statement_caches
  super
end
drop_table(*) click to toggle source

Clear statement caches for all connections when dropping tables.

Calls superclass method
# File lib/sequel/extensions/pg_statement_cache.rb, line 300
def drop_table(*)
  clear_statement_caches
  super
end

Private Instance Methods

clear_statement_caches() click to toggle source

Clear the statement cache for all connections. Note that for the threaded pools, this will not affect connections currently allocated to other threads.

# File lib/sequel/extensions/pg_statement_cache.rb, line 310
def clear_statement_caches
  pool.all_connections{|c| c.statement_cache.clear}
end