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 ofRETURNING
forINSERT
statements defaults to true.
Any further options are used as connection parameters to libpq. See www.postgresql.org/docs/current/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/current/static/libpq-envars.html .
- MODULE ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID
- CLASS ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPool
- A
- C
- D
- E
- I
- N
- P
- R
- S
-
- session_auth=,
- set_standard_conforming_strings,
- supports_advisory_locks?,
- supports_comments?,
- supports_datetime_with_precision?,
- supports_ddl_transactions?,
- supports_explain?,
- supports_expression_index?,
- supports_extensions?,
- supports_foreign_keys?,
- supports_index_sort_order?,
- supports_json?,
- supports_materialized_views?,
- supports_partial_index?,
- supports_pgcrypto_uuid?,
- supports_ranges?,
- supports_savepoints?,
- supports_statement_cache?,
- supports_transaction_isolation?,
- supports_views?
- T
- U
- ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting
- ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
- ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
ADAPTER_NAME | = | "PostgreSQL".freeze |
NATIVE_DATABASE_TYPES | = | { primary_key: "bigserial primary key", 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" }, 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" }, line: { name: "line" }, lseg: { name: "lseg" }, box: { name: "box" }, path: { name: "path" }, polygon: { name: "polygon" }, circle: { name: "circle" }, bit: { name: "bit" }, bit_varying: { name: "bit varying" }, money: { name: "money" }, interval: { name: "interval" }, oid: { name: "oid" }, } |
OID | = | PostgreSQL::OID #:nodoc: |
OPERATION_ALIASES | = | { # :nodoc: "maximum" => "max", "minimum" => "min", "average" => "avg", } |
VALUE_LIMIT_VIOLATION | = | "22001" |
See www.postgresql.org/docs/current/static/errcodes-appendix.html |
||
NUMERIC_VALUE_OUT_OF_RANGE | = | "22003" |
NOT_NULL_VIOLATION | = | "23502" |
FOREIGN_KEY_VIOLATION | = | "23503" |
UNIQUE_VIOLATION | = | "23505" |
SERIALIZATION_FAILURE | = | "40001" |
DEADLOCK_DETECTED | = | "40P01" |
FEATURE_NOT_SUPPORTED | = | "0A000" |
CACHED_PLAN_HEURISTIC | = | "cached plan must not change result type".freeze |
Annoyingly, the code for prepared statements whose return value may have changed is FEATURE_NOT_SUPPORTED. This covers various different error types so we need to do additional work to classify the exception definitively as a ActiveRecord::PreparedStatementCacheExpired Check here for more details: git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/utils/cache/plancache.c#l573 |
Initializes and connects a PostgreSQL adapter.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 211 def initialize(connection, logger, connection_parameters, config) super(connection, logger, config) @connection_parameters = connection_parameters # @local_tz is initialized as nil to avoid warnings when connect tries to use it @local_tz = nil @max_identifier_length = nil connect add_pg_encoders @statements = StatementPool.new @connection, self.class.type_cast_config_to_integer(config[:statement_limit]) if postgresql_version < 90100 raise "Your version of PostgreSQL (#{postgresql_version}) is too old. Active Record supports PostgreSQL >= 9.1." end add_pg_decoders @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 351 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
Returns the version of the connected PostgreSQL server.
Close then reopen the connection.
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 267 def reset! @lock.synchronize do clear_cache! reset_transaction unless @connection.transaction_status == ::PG::PQTRANS_IDLE @connection.query "ROLLBACK" end @connection.query "DISCARD ALL" configure_connection end end
Set the authorized user for this session
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