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_orderoption. -
: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 = valcalls on the connection. -
:insert_returning- An optional boolean to control the use ofRETURNINGforINSERTstatements 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 .
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ExplainTest
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::InactivePGconn
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::QuotingTest
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPool
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPoolTest
- A
- C
- D
- E
- I
- M
- N
- P
- R
- S
-
- session_auth=,
- set_standard_conforming_strings,
- supports_ddl_transactions?,
- supports_explain?,
- supports_extensions?,
- supports_foreign_keys?,
- supports_index_sort_order?,
- supports_materialized_views?,
- supports_migrations?,
- supports_partial_index?,
- supports_ranges?,
- supports_statement_cache?,
- supports_transaction_isolation?,
- supports_views?
- T
- U
- V
- ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting
- ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
- ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
| ADAPTER_NAME | = | 'PostgreSQL'.freeze |
| NATIVE_DATABASE_TYPES | = | { primary_key: "serial primary key", bigserial: "bigserial", string: { name: "character varying" }, text: { name: "text" }, integer: { name: "integer" }, float: { name: "float" }, decimal: { name: "decimal" }, datetime: { 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" }, bigint: { name: "bigint" }, xml: { name: "xml" }, tsvector: { name: "tsvector" }, hstore: { name: "hstore" }, inet: { name: "inet" }, cidr: { name: "cidr" }, macaddr: { name: "macaddr" }, uuid: { name: "uuid" }, json: { name: "json" }, jsonb: { name: "jsonb" }, ltree: { name: "ltree" }, citext: { name: "citext" }, point: { name: "point" }, bit: { name: "bit" }, bit_varying: { name: "bit varying" }, money: { name: "money" }, } |
| OID | = | PostgreSQL::OID #:nodoc: |
| OPERATION_ALIASES | = | { # :nodoc: "maximum" => "max", "minimum" => "min", "average" => "avg", } |
| FOREIGN_KEY_VIOLATION | = | "23503" |
See www.postgresql.org/docs/9.1/static/errcodes-appendix.html |
||
| UNIQUE_VIOLATION | = | "23505" |
| FEATURE_NOT_SUPPORTED | = | "0A000" |
Initializes and connects a PostgreSQL adapter.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 226 def initialize(connection, logger, connection_parameters, config) super(connection, logger) @visitor = Arel::Visitors::PostgreSQL.new self if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true }) @prepared_statements = true else @prepared_statements = false 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 @type_map = Type::HashLookupTypeMap.new initialize_type_map(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?
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 349 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.cast_values.first end end
Adds :array as a valid migration key
Close then reopen the connection.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 280 def reset! clear_cache! reset_transaction unless @connection.transaction_status == ::PG::PQTRANS_IDLE @connection.query 'ROLLBACK' end @connection.query 'DISCARD ALL' configure_connection end
Set the authorized user for this session
Returns true if pg > 9.1
Returns true, since this connection adapter supports migrations.
Range datatypes weren't introduced until PostgreSQL 9.2
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 414 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