class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPool - activerecord-4.2.3 Documentation

# class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPool

### Public Class Methods

new(connection, max) click to toggle source
Calls superclass method ActiveRecord::ConnectionAdapters::StatementPool.new

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 173
    def initialize(connection, max)
      super
      @counter = 0
      @cache   = Hash.new { |h,pid| h[pid] = {} }
    end

### Public Instance Methods

[](key) click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 181
    def [](key);      cache[key]; end

[]=(sql, key) click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 188
    def []=(sql, key)
      while @max <= cache.size
        dealloc(cache.shift.last)
      end
      @counter += 1
      cache[sql] = key
    end

clear() click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 196
    def clear
      cache.each_value do |stmt_key|
        dealloc stmt_key
      end
      cache.clear
    end

delete(sql_key) click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 203
    def delete(sql_key)
      dealloc cache[sql_key]
      cache.delete sql_key
    end

each(&block) click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 179
    def each(&block); cache.each(&block); end

key?(key) click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 180
    def key?(key);    cache.key?(key); end

length() click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 182
    def length;       cache.length; end

next_key() click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 184
    def next_key
      "a#{@counter + 1}"
    end

### Private Instance Methods

cache() click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 210
    def cache
      @cache[Process.pid]
    end

connection_active?() click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 218
    def connection_active?
      @connection.status == PGconn::CONNECTION_OK
    rescue PGError
      false
    end

dealloc(key) click to toggle source

    # File lib/active_record/connection_adapters/postgresql_adapter.rb, line 214
    def dealloc(key)
      @connection.query "DEALLOCATE #{key}" if connection_active?
    end