Class: ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- Inherits:
-
AbstractAdapter
- Object
- AbstractAdapter
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- Includes:
- ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements, ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting, ActiveRecord::ConnectionAdapters::PostgreSQL::ReferentialIntegrity, ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
- Defined in:
- activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
Overview
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 .
Defined Under Namespace
Classes: StatementPool
Constant Summary collapse
- ADAPTER_NAME =
"PostgreSQL"
- NATIVE_DATABASE_TYPES =
{ primary_key: "bigserial primary key", string: { name: "character varying" }, text: { name: "text" }, integer: { name: "integer", limit: 4 }, 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 =
:nodoc:
PostgreSQL::OID
- OPERATION_ALIASES =
:nodoc:
{ # :nodoc: "maximum" => "max", "minimum" => "min", "average" => "avg", }
Constants included from ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements::BYTEA_COLUMN_TYPE_OID, ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements::MONEY_COLUMN_TYPE_OID
Constants inherited from AbstractAdapter
AbstractAdapter::COMMENT_REGEX, AbstractAdapter::SIMPLE_INT
Constants included from ActiveSupport::Callbacks
ActiveSupport::Callbacks::CALLBACK_FILTER_TYPES
Instance Attribute Summary
Attributes inherited from AbstractAdapter
#lock, #logger, #owner, #pool, #visitor
Attributes included from QueryCache
#query_cache, #query_cache_enabled
Attributes included from DatabaseStatements
Class Method Summary collapse
Instance Method Summary collapse
-
#active? ⇒ Boolean
Is this connection alive and ready for queries?.
-
#build_insert_sql(insert) ⇒ Object
:nodoc:.
-
#check_version ⇒ Object
:nodoc:.
-
#column_name_for_operation(operation, node) ⇒ Object
:nodoc:.
-
#create_unlogged_tables ⇒ Object
:singleton-method: PostgreSQL allows the creation of “unlogged” tables, which do not record data in the PostgreSQL Write-Ahead Log.
-
#default_index_type?(index) ⇒ Boolean
:nodoc:.
- #disable_extension(name) ⇒ Object
-
#discard! ⇒ Object
:nodoc:.
-
#disconnect! ⇒ Object
Disconnects from the database if already connected.
- #enable_extension(name) ⇒ Object
- #extension_available?(name) ⇒ Boolean
- #extension_enabled?(name) ⇒ Boolean
- #extensions ⇒ Object
-
#get_advisory_lock(lock_id) ⇒ Object
:nodoc:.
-
#get_database_version ⇒ Object
Returns the version of the connected PostgreSQL server.
- #index_algorithms ⇒ Object
-
#initialize(connection, logger, connection_parameters, config) ⇒ PostgreSQLAdapter
constructor
Initializes and connects a PostgreSQL adapter.
-
#max_identifier_length ⇒ Object
Returns the configured supported identifier length supported by PostgreSQL.
-
#native_database_types ⇒ Object
:nodoc:.
-
#reconnect! ⇒ Object
Close then reopen the connection.
-
#release_advisory_lock(lock_id) ⇒ Object
:nodoc:.
- #reset! ⇒ Object
-
#session_auth=(user) ⇒ Object
Set the authorized user for this session.
- #set_standard_conforming_strings ⇒ Object
- #supports_advisory_locks? ⇒ Boolean
- #supports_bulk_alter? ⇒ Boolean
- #supports_comments? ⇒ Boolean
- #supports_common_table_expressions? ⇒ Boolean
- #supports_datetime_with_precision? ⇒ Boolean
- #supports_ddl_transactions? ⇒ Boolean
- #supports_explain? ⇒ Boolean
- #supports_expression_index? ⇒ Boolean
- #supports_extensions? ⇒ Boolean
- #supports_foreign_keys? ⇒ Boolean
- #supports_foreign_tables? ⇒ Boolean
- #supports_index_sort_order? ⇒ Boolean
- #supports_insert_on_conflict? ⇒ Boolean (also: #supports_insert_on_duplicate_skip?, #supports_insert_on_duplicate_update?, #supports_insert_conflict_target?)
- #supports_insert_returning? ⇒ Boolean
- #supports_json? ⇒ Boolean
- #supports_lazy_transactions? ⇒ Boolean
- #supports_materialized_views? ⇒ Boolean
- #supports_optimizer_hints? ⇒ Boolean
- #supports_partial_index? ⇒ Boolean
- #supports_pgcrypto_uuid? ⇒ Boolean
- #supports_ranges? ⇒ Boolean
- #supports_savepoints? ⇒ Boolean
- #supports_transaction_isolation? ⇒ Boolean
- #supports_validate_constraints? ⇒ Boolean
- #supports_views? ⇒ Boolean
- #use_insert_returning? ⇒ Boolean
Methods included from ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
#begin_db_transaction, #begin_isolated_db_transaction, #commit_db_transaction, #exec_delete, #exec_insert, #exec_query, #exec_rollback_db_transaction, #execute, #explain, #query, #result_as_array, #write_query?
Methods included from ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
#add_column, #add_index, #change_column, #change_column_comment, #change_column_default, #change_column_null, #change_table_comment, #client_min_messages, #client_min_messages=, #collation, #columns_for_distinct, #create_database, #create_schema, #create_schema_dumper, #ctype, #current_database, #current_schema, #default_sequence_name, #drop_database, #drop_schema, #drop_table, #encoding, #foreign_keys, #foreign_table_exists?, #foreign_tables, #index_name_exists?, #indexes, #pk_and_sequence_for, #primary_keys, #recreate_database, #remove_index, #rename_column, #rename_index, #rename_table, #reset_pk_sequence!, #schema_exists?, #schema_names, #schema_search_path, #schema_search_path=, #serial_sequence, #set_pk_sequence!, #table_comment, #table_options, #type_to_sql, #update_table_definition, #validate_constraint, #validate_foreign_key
Methods included from ActiveRecord::ConnectionAdapters::PostgreSQL::ReferentialIntegrity
#disable_referential_integrity
Methods included from ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting
#column_name_matcher, #column_name_with_order_matcher, #escape_bytea, #lookup_cast_type_from_column, #quote_column_name, #quote_default_expression, #quote_schema_name, #quote_string, #quote_table_name, #quote_table_name_for_assignment, #quoted_binary, #quoted_date, #unescape_bytea
Methods inherited from AbstractAdapter
#adapter_name, #advisory_locks_enabled?, build_read_query_regexp, #case_insensitive_comparison, #case_sensitive_comparison, #clear_cache!, #close, #database_version, #default_uniqueness_comparison, #disable_referential_integrity, #expire, #lease, #migration_context, #migrations_paths, #prefetch_primary_key?, #prepared_statements, #prepared_statements_disabled_cache, #preventing_writes?, quoted_column_names, quoted_table_names, #raw_connection, #replica?, #requires_reloading?, #schema_cache, #schema_cache=, #schema_migration, #seconds_idle, #steal!, #supports_comments_in_create?, #supports_foreign_keys_in_create?, #supports_indexes_in_create?, #supports_multi_insert?, #supports_virtual_columns?, type_cast_config_to_boolean, type_cast_config_to_integer, #unprepared_statement, #valid_type?, #verify!
Methods included from Savepoints
#create_savepoint, #current_savepoint_name, #exec_rollback_to_savepoint, #release_savepoint
Methods included from QueryCache
#cache, #clear_query_cache, dirties_query_cache, #disable_query_cache!, #enable_query_cache!, included, #select_all, #uncached
Methods included from DatabaseLimits
#allowed_index_name_length, #column_name_length, #columns_per_multicolumn_index, #columns_per_table, #in_clause_length, #index_name_length, #indexes_per_table, #joins_per_query, #sql_query_length, #table_alias_length, #table_name_length
Methods included from Quoting
#column_name_matcher, #column_name_with_order_matcher, #lookup_cast_type_from_column, #quote, #quote_column_name, #quote_default_expression, #quote_string, #quote_table_name, #quote_table_name_for_assignment, #quoted_binary, #quoted_date, #quoted_false, #quoted_time, #quoted_true, #sanitize_as_sql_comment, #type_cast, #type_cast_from_column, #unquoted_false, #unquoted_true
Methods included from DatabaseStatements
#add_transaction_record, #begin_db_transaction, #begin_isolated_db_transaction, #cacheable_query, #commit_db_transaction, #default_sequence_name, #delete, #empty_insert_statement_value, #exec_delete, #exec_insert, #exec_insert_all, #exec_query, #exec_rollback_db_transaction, #exec_update, #execute, #insert, #insert_fixture, #insert_fixtures_set, #query, #query_value, #query_values, #reset_sequence!, #reset_transaction, #rollback_db_transaction, #rollback_to_savepoint, #sanitize_limit, #select_all, #select_one, #select_rows, #select_value, #select_values, #to_sql, #transaction, #transaction_isolation_levels, #transaction_open?, #transaction_state, #truncate, #truncate_tables, #update, #with_yaml_fallback, #write_query?
Methods included from SchemaStatements
#add_column, #add_foreign_key, #add_index, #add_index_options, #add_reference, #add_timestamps, #assume_migrated_upto_version, #change_column, #change_column_comment, #change_column_default, #change_column_null, #change_table, #change_table_comment, #column_exists?, #columns, #columns_for_distinct, #create_join_table, #create_schema_dumper, #create_table, #data_source_exists?, #data_sources, #drop_join_table, #drop_table, #dump_schema_information, #foreign_key_column_for, #foreign_key_exists?, #foreign_key_options, #foreign_keys, #index_exists?, #index_name, #index_name_exists?, #indexes, #internal_string_options_for_primary_key, #options_include_default?, #primary_key, #remove_column, #remove_columns, #remove_foreign_key, #remove_index, #remove_reference, #remove_timestamps, #rename_column, #rename_index, #rename_table, #table_alias_for, #table_comment, #table_exists?, #table_options, #tables, #type_to_sql, #update_table_definition, #view_exists?, #views
Methods included from ActiveSupport::Callbacks
Methods included from ActiveSupport::Concern
#append_features, #class_methods, extended, #included
Constructor Details
#initialize(connection, logger, connection_parameters, config) ⇒ PostgreSQLAdapter
Initializes and connects a PostgreSQL adapter.
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 244 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 configure_connection add_pg_encoders add_pg_decoders @type_map = Type::HashLookupTypeMap.new 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 |
Class Method Details
.database_exists?(config) ⇒ Boolean
263 264 265 266 267 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 263 def self.database_exists?(config) !!ActiveRecord::Base.postgresql_connection(config) rescue ActiveRecord::NoDatabaseError false end |
Instance Method Details
#active? ⇒ Boolean
Is this connection alive and ready for queries?
270 271 272 273 274 275 276 277 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 270 def active? @lock.synchronize do @connection.query "SELECT 1" end true rescue PG::Error false end |
#build_insert_sql(insert) ⇒ Object
:nodoc:
446 447 448 449 450 451 452 453 454 455 456 457 458 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 446 def build_insert_sql(insert) # :nodoc: sql = +"INSERT #{insert.into} #{insert.values_list}" if insert.skip_duplicates? sql << " ON CONFLICT #{insert.conflict_target} DO NOTHING" elsif insert.update_duplicates? sql << " ON CONFLICT #{insert.conflict_target} DO UPDATE SET " sql << insert.updatable_columns.map { |column| "#{column}=excluded.#{column}" }.join(",") end sql << " RETURNING #{insert.returning}" if insert.returning sql end |
#check_version ⇒ Object
:nodoc:
460 461 462 463 464 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 460 def check_version # :nodoc: if database_version < 90300 raise "Your version of PostgreSQL (#{database_version}) is too old. Active Record supports PostgreSQL >= 9.3." end end |
#column_name_for_operation(operation, node) ⇒ Object
:nodoc:
426 427 428 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 426 def column_name_for_operation(operation, node) # :nodoc: OPERATION_ALIASES.fetch(operation) { operation.downcase } end |
#create_unlogged_tables ⇒ Object
:singleton-method: PostgreSQL allows the creation of “unlogged” tables, which do not record data in the PostgreSQL Write-Ahead Log. This can make the tables faster, but significantly increases the risk of data loss if the database crashes. As a result, this should not be used in production environments. If you would like all created tables to be unlogged in the test environment you can add the following line to your test.rb file:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.create_unlogged_tables = true
100 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 100 class_attribute :create_unlogged_tables, default: false |
#default_index_type?(index) ⇒ Boolean
:nodoc:
442 443 444 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 442 def default_index_type?(index) # :nodoc: index.using == :btree || super end |
#disable_extension(name) ⇒ Object
393 394 395 396 397 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 393 def disable_extension(name) exec_query("DROP EXTENSION IF EXISTS \"#{name}\" CASCADE").tap { reload_type_map } end |
#discard! ⇒ Object
:nodoc:
311 312 313 314 315 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 311 def discard! # :nodoc: super @connection.socket_io.reopen(IO::NULL) rescue nil @connection = nil end |
#disconnect! ⇒ Object
Disconnects from the database if already connected. Otherwise, this method does nothing.
304 305 306 307 308 309 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 304 def disconnect! @lock.synchronize do super @connection.close rescue nil end end |
#enable_extension(name) ⇒ Object
387 388 389 390 391 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 387 def enable_extension(name) exec_query("CREATE EXTENSION IF NOT EXISTS \"#{name}\"").tap { reload_type_map } end |
#extension_available?(name) ⇒ Boolean
399 400 401 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 399 def extension_available?(name) query_value("SELECT true FROM pg_available_extensions WHERE name = #{quote(name)}", "SCHEMA") end |
#extension_enabled?(name) ⇒ Boolean
403 404 405 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 403 def extension_enabled?(name) query_value("SELECT installed_version IS NOT NULL FROM pg_available_extensions WHERE name = #{quote(name)}", "SCHEMA") end |
#extensions ⇒ Object
407 408 409 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 407 def extensions exec_query("SELECT extname FROM pg_extension", "SCHEMA").cast_values end |
#get_advisory_lock(lock_id) ⇒ Object
:nodoc:
373 374 375 376 377 378 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 373 def get_advisory_lock(lock_id) # :nodoc: unless lock_id.is_a?(Integer) && lock_id.bit_length <= 63 raise(ArgumentError, "PostgreSQL requires advisory lock ids to be a signed 64 bit integer") end query_value("SELECT pg_try_advisory_lock(#{lock_id})") end |
#get_database_version ⇒ Object
Returns the version of the connected PostgreSQL server.
437 438 439 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 437 def get_database_version # :nodoc: @connection.server_version end |
#index_algorithms ⇒ Object
211 212 213 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 211 def index_algorithms { concurrently: "CONCURRENTLY" } end |
#max_identifier_length ⇒ Object
Returns the configured supported identifier length supported by PostgreSQL
412 413 414 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 412 def max_identifier_length @max_identifier_length ||= query_value("SHOW max_identifier_length", "SCHEMA").to_i end |
#native_database_types ⇒ Object
:nodoc:
317 318 319 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 317 def native_database_types #:nodoc: NATIVE_DATABASE_TYPES end |
#reconnect! ⇒ Object
Close then reopen the connection.
280 281 282 283 284 285 286 287 288 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 280 def reconnect! @lock.synchronize do super @connection.reset configure_connection rescue PG::ConnectionBad connect end end |
#release_advisory_lock(lock_id) ⇒ Object
:nodoc:
380 381 382 383 384 385 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 380 def release_advisory_lock(lock_id) # :nodoc: unless lock_id.is_a?(Integer) && lock_id.bit_length <= 63 raise(ArgumentError, "PostgreSQL requires advisory lock ids to be a signed 64 bit integer") end query_value("SELECT pg_advisory_unlock(#{lock_id})") end |
#reset! ⇒ Object
290 291 292 293 294 295 296 297 298 299 300 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 290 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 |
#session_auth=(user) ⇒ Object
Set the authorized user for this session
417 418 419 420 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 417 def session_auth=(user) clear_cache! execute("SET SESSION AUTHORIZATION #{user}") end |
#set_standard_conforming_strings ⇒ Object
321 322 323 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 321 def set_standard_conforming_strings execute("SET standard_conforming_strings = on", "SCHEMA") end |
#supports_advisory_locks? ⇒ Boolean
329 330 331 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 329 def supports_advisory_locks? true end |
#supports_bulk_alter? ⇒ Boolean
152 153 154 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 152 def supports_bulk_alter? true end |
#supports_comments? ⇒ Boolean
192 193 194 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 192 def supports_comments? true end |
#supports_common_table_expressions? ⇒ Boolean
365 366 367 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 365 def supports_common_table_expressions? true end |
#supports_datetime_with_precision? ⇒ Boolean
184 185 186 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 184 def supports_datetime_with_precision? true end |
#supports_ddl_transactions? ⇒ Boolean
325 326 327 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 325 def supports_ddl_transactions? true end |
#supports_explain? ⇒ Boolean
333 334 335 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 333 def supports_explain? true end |
#supports_expression_index? ⇒ Boolean
164 165 166 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 164 def supports_expression_index? true end |
#supports_extensions? ⇒ Boolean
337 338 339 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 337 def supports_extensions? true end |
#supports_foreign_keys? ⇒ Boolean
172 173 174 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 172 def supports_foreign_keys? true end |
#supports_foreign_tables? ⇒ Boolean
350 351 352 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 350 def supports_foreign_tables? true end |
#supports_index_sort_order? ⇒ Boolean
156 157 158 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 156 def supports_index_sort_order? true end |
#supports_insert_on_conflict? ⇒ Boolean Also known as: supports_insert_on_duplicate_skip?, supports_insert_on_duplicate_update?, supports_insert_conflict_target?
204 205 206 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 204 def supports_insert_on_conflict? database_version >= 90500 end |
#supports_insert_returning? ⇒ Boolean
200 201 202 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 200 def supports_insert_returning? true end |
#supports_json? ⇒ Boolean
188 189 190 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 188 def supports_json? true end |
#supports_lazy_transactions? ⇒ Boolean
369 370 371 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 369 def supports_lazy_transactions? true end |
#supports_materialized_views? ⇒ Boolean
346 347 348 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 346 def supports_materialized_views? true end |
#supports_optimizer_hints? ⇒ Boolean
358 359 360 361 362 363 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 358 def supports_optimizer_hints? unless defined?(@has_pg_hint_plan) @has_pg_hint_plan = extension_available?("pg_hint_plan") end @has_pg_hint_plan end |
#supports_partial_index? ⇒ Boolean
160 161 162 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 160 def supports_partial_index? true end |
#supports_pgcrypto_uuid? ⇒ Boolean
354 355 356 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 354 def supports_pgcrypto_uuid? database_version >= 90400 end |
#supports_ranges? ⇒ Boolean
341 342 343 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 341 def supports_ranges? true end |
#supports_savepoints? ⇒ Boolean
196 197 198 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 196 def supports_savepoints? true end |
#supports_transaction_isolation? ⇒ Boolean
168 169 170 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 168 def supports_transaction_isolation? true end |
#supports_validate_constraints? ⇒ Boolean
176 177 178 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 176 def supports_validate_constraints? true end |
#supports_views? ⇒ Boolean
180 181 182 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 180 def supports_views? true end |
#use_insert_returning? ⇒ Boolean
422 423 424 |
# File 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb', line 422 def use_insert_returning? @use_insert_returning end |