Class | ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
In: | lib/active_record/connection_adapters/postgresql_adapter.rb
Parent: | AbstractAdapter

The PostgreSQL adapter works both with the native C (ruby.scripting.ca/postgres/) and the pure Ruby (available both as gem and from rubyforge.org/frs/?group_id=234&release_id=1944) drivers.

Options:

- `:host` - Defaults to "localhost".
- `:port` - Defaults to 5432.
- `:username` - Defaults to nothing.
- `:password` - Defaults to nothing.
- `:database` - The name of the database. No default, must be provided.
- `:schema_search_path` - An optional schema search path for the connection given as a string of comma-separated schema names. This is backward-compatible with the `:schema_order` option.
- `:encoding` - An optional client encoding that is used in a `SET client_encoding TO <encoding>` call on the connection.
- `:min_messages` - An optional client min messages that is used in a `SET client_min_messages TO <min_messages>` call on the connection.
- `:allow_concurrency` - If true, use async query methods so Ruby threads don‘t deadlock; otherwise, use blocking query methods.

### Methods

active? adapter_name add_column begin_db_transaction change_column change_column_default change_column_null client_min_messages client_min_messages= columns commit_db_transaction create_database create_savepoint current_database disconnect! encoding escape_bytea execute indexes insert new outside_transaction? postgresql_version primary_key quote_table_name reconnect! release_savepoint remove_index rename_column rename_table rollback_db_transaction rollback_to_savepoint schema_search_path schema_search_path= select_rows supports_ddl_transactions? supports_insert_with_returning? supports_migrations? supports_savepoints? supports_standard_conforming_strings? table_alias_length tables type_to_sql unescape_bytea update_sql

### Constants

ADAPTER_NAME | = | 'PostgreSQL'.freeze

NATIVE_DATABASE_TYPES

=

{ :primary_key => "serial primary key".freeze, :string => { :name => "character varying", :limit => 255 }, :text => { :name => "text" }, :integer => { :name => "integer" }, :float => { :name => "float" }, :decimal => { :name => "decimal" }, :datetime => { :name => "timestamp" }, :timestamp => { :name => "timestamp" }, :time => { :name => "time" }, :date => { :name => "date" }, :binary => { :name => "bytea" }, :boolean => { :name => "boolean" }, :xml => { :name => "xml" }

### Public Class methods

new(connection, logger, connection_parameters, config)

Initializes and connects a PostgreSQL adapter.

### Public Instance methods

active?()

Is this connection alive and ready for queries?

adapter_name()

Returns ‘PostgreSQL’ as adapter name for identification purposes.

add_column(table_name, column_name, type, options = {})

Adds a new column to the named table. See TableDefinition#column for details of the options you can use.

begin_db_transaction()

Begins a transaction.

change_column(table_name, column_name, type, options = {})

Changes the column of a table.

change_column_default(table_name, column_name, default)

Changes the default value of a table column.

change_column_null(table_name, column_name, null, default = nil)
client_min_messages()

Returns the current client message level.

client_min_messages=(level)

Set the client message level.

columns(table_name, name = nil)

Returns the list of all column definitions for a table.

commit_db_transaction()

Commits a transaction.

create_database(name, options = {})

Create a new PostgreSQL database. Options include `:owner`, `:template`, `:encoding`, `:tablespace`, and `:connection_limit` (note that MySQL uses `:charset` while PostgreSQL uses `:encoding`).

Example:

      create_database config[:database], config
      create_database 'foo_development', :encoding => 'unicode'

create_savepoint()
current_database()

Returns the current database name.

disconnect!()

Close the connection.

encoding()

Returns the current database encoding format.

escape_bytea(value)

Escapes binary strings for bytea input to the database.

execute(sql, name = nil)

Executes an SQL statement, returning a PGresult object on success or raising a PGError exception otherwise.

indexes(table_name, name = nil)

Returns the list of all indexes for a table.

insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)

Executes an INSERT query and returns the new record‘s ID

outside_transaction?()

The ruby-pg driver supports inspecting the transaction status, while the ruby-postgres driver does not.

primary_key(table)

Returns just a table‘s primary key

quote_table_name(name)

Checks the following cases:

- table_name
- "table.name"
- schema_name.table_name
- schema_name."table.name"
- "schema.name".table_name
- "schema.name"."table.name"

reconnect!()

Close then reopen the connection.

release_savepoint()
remove_index(table_name, options = {})

Drops an index from a table.

rename_column(table_name, column_name, new_column_name)

Renames a column in a table.

rename_table(name, new_name)

Renames a table.

rollback_db_transaction()

Aborts a transaction.

rollback_to_savepoint()
schema_search_path()

Returns the active schema search path.

schema_search_path=(schema_csv)

Sets the schema search path to a string of comma-separated schema names. Names beginning with $ have to be quoted (e.g. $user => ’$user’). See: www.postgresql.org/docs/current/static/ddl-schemas.html

This should be not be called manually but set in database.yml.

select_rows(sql, name = nil)

Executes a SELECT query and returns an array of rows. Each row is an array of field values.

supports_ddl_transactions?()
supports_insert_with_returning?()
supports_migrations?()

Does PostgreSQL support migrations?

supports_savepoints?()
supports_standard_conforming_strings?()

Does PostgreSQL support standard conforming strings?

table_alias_length()

Returns the configured supported identifier length supported by PostgreSQL, or report the default of 63 on PostgreSQL 7.x.

tables(name = nil)

Returns the list of all tables in the schema search path or a specified schema.

type_to_sql(type, limit = nil, precision = nil, scale = nil)

Maps logical Rails types to PostgreSQL-specific data types.

unescape_bytea(value)

Unescapes bytea output from a database to the binary string it represents. NOTE: This is NOT an inverse of escape_bytea! This is only to be used

          on escaped binary output from database drive.

update_sql(sql, name = nil)

Executes an UPDATE query and returns the number of affected tuples.

### Protected Instance methods

postgresql_version()

Returns the version of the connected PostgreSQL version.

[Validate]