The PostgreSQL adapter works with the native C (bitbucket.org/ged/ruby-pg) driver.
Options:
-
:host
- Defaults to a Unix-domain socket in /tmp. On machines without Unix-domain sockets, the default is to connect to localhost. -
:port
- Defaults to 5432. -
:username
- Defaults to be the same as the operating system name of the user running the application. -
:password
- Password to be used if the server demands password authentication. -
:database
- Defaults to be the same as the user name. -
: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 aSET client_encoding TO <encoding>
call on the connection. -
:min_messages
- An optional client min messages that is used in aSET client_min_messages TO <min_messages>
call on the connection. -
:variables
- An optional hash of additional parameters that will be used inSET SESSION key = val
calls on the connection. -
:insert_returning
- An optional boolean to control the use orRETURNING
forINSERT
statements defaults to true.
Any further options are used as connection parameters to libpq. See www.postgresql.org/docs/9.1/static/libpq-connect.html for the list of parameters.
In addition, default connection parameters of libpq can be set per environment variables. See www.postgresql.org/docs/9.1/static/libpq-envars.html .
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnMethods
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::DatabaseStatements
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::Quoting
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ReferentialIntegrity
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::SchemaStatements
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::Utils
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnDefinition
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::SchemaCreation
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPool
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::Table
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition
- A
- C
- D
- E
- I
- M
- N
- P
- R
- S
-
- schema_creation,
- session_auth=,
- set_standard_conforming_strings,
- supports_ddl_transactions?,
- supports_explain?,
- supports_extensions?,
- supports_index_sort_order?,
- supports_insert_with_returning?,
- supports_migrations?,
- supports_partial_index?,
- supports_ranges?,
- supports_savepoints?,
- supports_statement_cache?,
- supports_transaction_isolation?
- T
- U
- V
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::Quoting
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ReferentialIntegrity
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::SchemaStatements
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::DatabaseStatements
ADAPTER_NAME | = | 'PostgreSQL' |
NATIVE_DATABASE_TYPES | = | { primary_key: "serial primary key", 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" }, daterange: { name: "daterange" }, numrange: { name: "numrange" }, tsrange: { name: "tsrange" }, tstzrange: { name: "tstzrange" }, int4range: { name: "int4range" }, int8range: { name: "int8range" }, binary: { name: "bytea" }, boolean: { name: "boolean" }, xml: { name: "xml" }, tsvector: { name: "tsvector" }, hstore: { name: "hstore" }, inet: { name: "inet" }, cidr: { name: "cidr" }, macaddr: { name: "macaddr" }, uuid: { name: "uuid" }, json: { name: "json" }, ltree: { name: "ltree" } } |
FOREIGN_KEY_VIOLATION | = | "23503" |
See www.postgresql.org/docs/9.1/static/errcodes-appendix.html |
||
UNIQUE_VIOLATION | = | "23505" |
FEATURE_NOT_SUPPORTED | = | "0A000" |
MONEY_COLUMN_TYPE_OID | = | 790 |
The internal PostgreSQL identifier of the money data type. |
||
BYTEA_COLUMN_TYPE_OID | = | 17 |
The internal PostgreSQL identifier of the BYTEA data type. |
Initializes and connects a PostgreSQL adapter.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 532 def initialize(connection, logger, connection_parameters, config) super(connection, logger) if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true }) @prepared_statements = true @visitor = Arel::Visitors::PostgreSQL.new self else @visitor = unprepared_visitor end @connection_parameters, @config = connection_parameters, config # @local_tz is initialized as nil to avoid warnings when connect tries to use it @local_tz = nil @table_alias_length = nil connect @statements = StatementPool.new @connection, self.class.type_cast_config_to_integer(config.fetch(:statement_limit) { 1000 }) if postgresql_version < 80200 raise "Your version of PostgreSQL (#{postgresql_version}) is too old, please upgrade!" end initialize_type_map @local_tz = execute('SHOW TIME ZONE', 'SCHEMA').first["TimeZone"] @use_insert_returning = @config.key?(:insert_returning) ? self.class.type_cast_config_to_boolean(@config[:insert_returning]) : true end
Is this connection alive and ready for queries?
Returns 'PostgreSQL' as adapter name for identification purposes.
Clears the prepared statements cache.
Disconnects from the database if already connected. Otherwise, this method does nothing.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 654 def extension_enabled?(name) if supports_extensions? res = exec_query "SELECT EXISTS(SELECT * FROM pg_available_extensions WHERE name = '#{name}' AND installed_version IS NOT NULL) as enabled", 'SCHEMA' res.column_types['enabled'].type_cast res.rows.first.first end end
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 662 def extensions if supports_extensions? res = exec_query "SELECT extname from pg_extension", "SCHEMA" res.rows.map { |r| res.column_types['extname'].type_cast r.first } else super end end
Adds `:array` as a valid migration key
Adds `:array` option to the default set provided by the AbstractAdapter
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 440 def prepare_column_options(column, types) spec = super spec[:array] = 'true' if column.respond_to?(:array) && column.array spec[:default] = "\"#{column.default_function}\"" if column.default_function spec end
Close then reopen the connection.
Set the authorized user for this session
Enable standard-conforming strings if available.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 607 def set_standard_conforming_strings old, self.client_min_messages = client_min_messages, 'panic' execute('SET standard_conforming_strings = on', 'SCHEMA') rescue nil ensure self.client_min_messages = old end
Returns true.
Returns true if pg > 9.1
Returns true, since this connection adapter supports migrations.
Returns true, since this connection adapter supports savepoints.
Returns true
, since this connection adapter supports prepared
statement caching.
Returns the configured supported identifier length supported by PostgreSQL
Returns the version of the connected PostgreSQL server.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 720 def translate_exception(exception, message) return exception unless exception.respond_to?(:result) case exception.result.try(:error_field, PGresult::PG_DIAG_SQLSTATE) when UNIQUE_VIOLATION RecordNotUnique.new(message, exception) when FOREIGN_KEY_VIOLATION InvalidForeignKey.new(message, exception) else super end end