Active Record PostgreSQL Adapter¶ ↑
PostgreSQL 适配器使用原生的 C 语言 (github.com/ged/ruby-pg) 驱动。
选项¶ ↑
-
:host- 默认为 /tmp 中的 Unix 套接字。在没有 Unix 套接字的情况下,默认连接到 localhost。 -
:port- 默认为 5432。 -
:username- 默认为运行应用程序的用户所使用的操作系统用户名。 -
:password- 如果服务器要求密码认证,则使用此密码。 -
:database- 默认为用户名。 -
:schema_search_path- 连接的可选 schema 搜索路径,以逗号分隔的 schema 名称字符串形式给出。这向后兼容:schema_order选项。 -
:encoding- 可选的客户端编码,用于在连接上执行SET client_encoding TO <encoding>调用。 -
:min_messages- 可选的客户端最小消息级别,用于在连接上执行SET client_min_messages TO <min_messages>调用。 -
:variables- 用于在连接上执行SET SESSION key = val调用的附加参数的可选哈希。 -
:insert_returning- 一个可选的布尔值,用于控制INSERT语句是否使用RETURNING,默认为 true。
任何进一步的选项都将作为 libpq 的连接参数。有关参数列表,请参阅 www.postgresql.org/docs/current/static/libpq-connect.html。
此外,libpq 的默认连接参数可以通过环境变量设置。请参阅 www.postgresql.org/docs/current/static/libpq-envars.html。
- A
- C
- D
- E
- I
- M
- N
- R
- S
-
- session_auth=,
- set_standard_conforming_strings,
- supports_advisory_locks?,
- supports_bulk_alter?,
- supports_check_constraints?,
- supports_comments?,
- supports_common_table_expressions?,
- supports_datetime_with_precision?,
- supports_ddl_transactions?,
- supports_deferrable_constraints?,
- supports_exclusion_constraints?,
- supports_explain?,
- supports_expression_index?,
- supports_extensions?,
- supports_foreign_keys?,
- supports_foreign_tables?,
- supports_index_include?,
- supports_index_sort_order?,
- supports_insert_conflict_target?,
- supports_insert_on_conflict?,
- supports_insert_on_duplicate_skip?,
- supports_insert_on_duplicate_update?,
- supports_insert_returning?,
- supports_json?,
- supports_lazy_transactions?,
- supports_materialized_views?,
- supports_nulls_not_distinct?,
- supports_optimizer_hints?,
- supports_partial_index?,
- supports_partitioned_indexes?,
- supports_pgcrypto_uuid?,
- supports_restart_db_transaction?,
- supports_savepoints?,
- supports_transaction_isolation?,
- supports_unique_constraints?,
- supports_validate_constraints?,
- supports_views?,
- supports_virtual_columns?
- U
- ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting
- ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
- ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
常量
| ADAPTER_NAME | = | "PostgreSQL" |
| CHECK_VIOLATION | = | "23514" |
| DEADLOCK_DETECTED | = | "40P01" |
| DUPLICATE_DATABASE | = | "42P04" |
| EXCLUSION_VIOLATION | = | "23P01" |
| FOREIGN_KEY_VIOLATION | = | "23503" |
| LOCK_NOT_AVAILABLE | = | "55P03" |
| NATIVE_DATABASE_TYPES | = | { primary_key: "bigserial primary key", string: { name: "character varying" }, text: { name: "text" }, integer: { name: "integer", limit: 4 }, bigint: { name: "bigint" }, float: { name: "float" }, decimal: { name: "decimal" }, datetime: {}, # 根据 datetime_type 动态设置 timestamp: { name: "timestamp" }, timestamptz: { name: "timestamptz" }, 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" }, enum: {} # 特殊类型 https://postgresql.ac.cn/docs/current/datatype-enum.html } |
| NOT_NULL_VIOLATION | = | "23502" |
| NUMERIC_VALUE_OUT_OF_RANGE | = | "22003" |
| QUERY_CANCELED | = | "57014" |
| SERIALIZATION_FAILURE | = | "40001" |
| UNIQUE_VIOLATION | = | "23505" |
| VALUE_LIMIT_VIOLATION | = | "22001" |
请参阅 www.postgresql.org/docs/current/static/errcodes-appendix.html |
||
类公共方法
create_unlogged_tables 链接
PostgreSQL 允许创建“未记录”表,这些表不会将数据记录在 PostgreSQL 的预写日志 (WAL) 中。这可以提高表的速度,但会大大增加数据库崩溃时数据丢失的风险。因此,不应在生产环境中使用。如果您希望在测试环境中创建的所有表都是未记录的,可以在您的 test.rb 文件中添加以下内容:
ActiveSupport.on_load(:active_record_postgresqladapter) do self.create_unlogged_tables = true end
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 105 class_attribute :create_unlogged_tables, default: false
datetime_type 链接
PostgreSQL 支持多种 DateTime 类型。默认情况下,如果您在迁移中使用 datetime,Rails 会将其转换为 PostgreSQL 的“timestamp without time zone”。在初始化器中更改此设置以使用其他 NATIVE_DATABASE_TYPES。例如,要将 DateTimes 存储为“timestamp with time zone”:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.datetime_type = :timestamptz
或者,如果您正在添加自定义类型:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:my_custom_type] = { name: "my_custom_type_name" } ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.datetime_type = :my_custom_type
如果您使用的 config.active_record.schema_format 是 :ruby 并且您更改了此设置,您应该立即运行 bin/rails db:migrate 来更新 schema.rb 中的类型。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 123 class_attribute :datetime_type, default: :timestamp
dbconsole(config, options = {}) 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 73 def dbconsole(config, options = {}) pg_config = config.configuration_hash ENV["PGUSER"] = pg_config[:username] if pg_config[:username] ENV["PGHOST"] = pg_config[:host] if pg_config[:host] ENV["PGPORT"] = pg_config[:port].to_s if pg_config[:port] ENV["PGPASSWORD"] = pg_config[:password].to_s if pg_config[:password] && options[:include_password] ENV["PGSSLMODE"] = pg_config[:sslmode].to_s if pg_config[:sslmode] ENV["PGSSLCERT"] = pg_config[:sslcert].to_s if pg_config[:sslcert] ENV["PGSSLKEY"] = pg_config[:sslkey].to_s if pg_config[:sslkey] ENV["PGSSLROOTCERT"] = pg_config[:sslrootcert].to_s if pg_config[:sslrootcert] if pg_config[:variables] ENV["PGOPTIONS"] = pg_config[:variables].filter_map do |name, value| "-c #{name}=#{value.to_s.gsub(/[ \\]/, '\\\\\0')}" unless value == ":default" || value == :default end.join(" ") end find_cmd_and_exec(ActiveRecord.database_cli[:postgresql], config.database) end
decode_dates 链接
切换日期列的自动解码。
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.select_value("select '2024-01-01'::date").class #=> String ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.decode_dates = true ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.select_value("select '2024-01-01'::date").class #=> Date
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 132 class_attribute :decode_dates, default: false
new(...) 链接
初始化并连接 PostgreSQL 适配器。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 334 def initialize(...) super conn_params = @config.compact # Map ActiveRecords param names to PGs. conn_params[:user] = conn_params.delete(:username) if conn_params[:username] conn_params[:dbname] = conn_params.delete(:database) if conn_params[:database] # Forward only valid config params to PG::Connection.connect. valid_conn_param_keys = PG::Connection.conndefaults_hash.keys + [:requiressl] conn_params.slice!(*valid_conn_param_keys) @connection_parameters = conn_params @max_identifier_length = nil @type_map = nil @raw_connection = nil @notice_receiver_sql_warnings = [] @use_insert_returning = @config.key?(:insert_returning) ? self.class.type_cast_config_to_boolean(@config[:insert_returning]) : true end
new_client(conn_params) 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 57 def new_client(conn_params) PG.connect(**conn_params) rescue ::PG::Error => error if conn_params && conn_params[:dbname] == "postgres" raise ActiveRecord::ConnectionNotEstablished, error.message elsif conn_params && conn_params[:dbname] && error.message.include?(conn_params[:dbname]) raise ActiveRecord::NoDatabaseError.db_error(conn_params[:dbname]) elsif conn_params && conn_params[:user] && error.message.include?(conn_params[:user]) raise ActiveRecord::DatabaseConnectionError.username_error(conn_params[:user]) elsif conn_params && conn_params[:host] && error.message.include?(conn_params[:host]) raise ActiveRecord::DatabaseConnectionError.hostname_error(conn_params[:host]) else raise ActiveRecord::ConnectionNotEstablished, error.message end end
实例公共方法
active?() 链接
此连接是否处于活动状态并准备好执行查询?
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 362 def active? @lock.synchronize do return false unless @raw_connection @raw_connection.query ";" verified! end true rescue PG::Error false end
add_enum_value(type_name, value, **options) 链接
向现有的 enum 类型添加 enum 值。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 598 def add_enum_value(type_name, value, **options) before, after = options.values_at(:before, :after) sql = +"ALTER TYPE #{quote_table_name(type_name)} ADD VALUE" sql << " IF NOT EXISTS" if options[:if_not_exists] sql << " #{quote(value)}" if before && after raise ArgumentError, "Cannot have both :before and :after at the same time" elsif before sql << " BEFORE #{quote(before)}" elsif after sql << " AFTER #{quote(after)}" end execute(sql).tap { reload_type_map } end
connected?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 357 def connected? !(@raw_connection.nil? || @raw_connection.finished?) end
create_enum(name, values, **options) 链接
给定名称和值数组,创建 enum 类型。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 551 def create_enum(name, values, **options) sql_values = values.map { |s| quote(s) }.join(", ") scope = quoted_scope(name) query = <<~SQL DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_type t JOIN pg_namespace n ON t.typnamespace = n.oid WHERE t.typname = #{scope[:name]} AND n.nspname = #{scope[:schema]} ) THEN CREATE TYPE #{quote_table_name(name)} AS ENUM (#{sql_values}); END IF; END $$; SQL internal_exec_query(query).tap { reload_type_map } end
disable_extension(name, force: false) 链接
从数据库中删除扩展。
:force-
设置为
:cascade以便同时删除依赖项。默认为 false。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 496 def disable_extension(name, force: false) _schema, name = name.to_s.split(".").values_at(-2, -1) internal_exec_query("DROP EXTENSION IF EXISTS \"#{name}\"#{' CASCADE' if force == :cascade}").tap { reload_type_map } end
disconnect!() 链接
如果已连接,则断开与数据库的连接。否则,此方法不执行任何操作。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 400 def disconnect! @lock.synchronize do super @raw_connection&.close rescue nil @raw_connection = nil end end
drop_enum(name, values = nil, **options) 链接
删除 enum 类型。
如果提供了 if_exists: true 选项,则仅在 enum 存在时才删除它。否则,如果 enum 不存在,则会引发错误。
如果存在 values 参数,它将被忽略。在迁移的 change 方法中提供此参数可能很有用,以便可以撤销。在这种情况下,values 将由 create_enum 使用。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 581 def drop_enum(name, values = nil, **options) query = <<~SQL DROP TYPE#{' IF EXISTS' if options[:if_exists]} #{quote_table_name(name)}; SQL internal_exec_query(query).tap { reload_type_map } end
enable_extension(name, **) 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 483 def enable_extension(name, **) schema, name = name.to_s.split(".").values_at(-2, -1) sql = +"CREATE EXTENSION IF NOT EXISTS \"#{name}\"" sql << " SCHEMA #{schema}" if schema internal_exec_query(sql).tap { reload_type_map } end
enum_types() 链接
返回已定义的 enum 类型及其值的列表。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 528 def enum_types query = <<~SQL SELECT type.typname AS name, type.OID AS oid, n.nspname AS schema, array_agg(enum.enumlabel ORDER BY enum.enumsortorder) AS value FROM pg_enum AS enum JOIN pg_type AS type ON (type.oid = enum.enumtypid) JOIN pg_namespace n ON type.typnamespace = n.oid WHERE n.nspname = ANY (current_schemas(false)) GROUP BY type.OID, n.nspname, type.typname; SQL internal_exec_query(query, "SCHEMA", allow_retry: true, materialize_transactions: false).cast_values.each_with_object({}) do |row, memo| name, schema = row[0], row[2] schema = nil if schema == current_schema full_name = [schema, name].compact.join(".") memo[full_name] = row.last end.to_a end
extension_available?(name) 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 503 def extension_available?(name) query_value("SELECT true FROM pg_available_extensions WHERE name = #{quote(name)}", "SCHEMA") end
extension_enabled?(name) 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 507 def extension_enabled?(name) query_value("SELECT installed_version IS NOT NULL FROM pg_available_extensions WHERE name = #{quote(name)}", "SCHEMA") end
extensions() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 511 def extensions query = <<~SQL SELECT pg_extension.extname, n.nspname AS schema FROM pg_extension JOIN pg_namespace n ON pg_extension.extnamespace = n.oid SQL internal_exec_query(query, "SCHEMA", allow_retry: true, materialize_transactions: false).cast_values.map do |row| name, schema = row[0], row[1] schema = nil if schema == current_schema [schema, name].compact.join(".") end end
index_algorithms() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 301 def index_algorithms { concurrently: "CONCURRENTLY" } end
max_identifier_length() 链接
返回 PostgreSQL 支持的配置的最大标识符长度。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 630 def max_identifier_length @max_identifier_length ||= query_value("SHOW max_identifier_length", "SCHEMA").to_i end
rename_enum(name, new_name = nil, **options) 链接
将现有的 enum 类型重命名为其他名称。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 589 def rename_enum(name, new_name = nil, **options) new_name ||= options.fetch(:to) do raise ArgumentError, "rename_enum requires two from/to name positional arguments." end exec_query("ALTER TYPE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}").tap { reload_type_map } end
rename_enum_value(type_name, **options) 链接
重命名现有 enum 类型中的 enum 值。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 616 def rename_enum_value(type_name, **options) unless database_version >= 10_00_00 # >= 10.0 raise ArgumentError, "Renaming enum values is only supported in PostgreSQL 10 or later" end from = options.fetch(:from) { raise ArgumentError, ":from is required" } to = options.fetch(:to) { raise ArgumentError, ":to is required" } execute("ALTER TYPE #{quote_table_name(type_name)} RENAME VALUE #{quote(from)} TO #{quote(to)}").tap { reload_type_map } end
reset!() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 385 def reset! @lock.synchronize do return connect! unless @raw_connection unless @raw_connection.transaction_status == ::PG::PQTRANS_IDLE @raw_connection.query "ROLLBACK" end @raw_connection.query "DISCARD ALL" super end end
session_auth=(user) 链接
设置此会话的授权用户。
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 635 def session_auth=(user) clear_cache! internal_execute("SET SESSION AUTHORIZATION #{user}", nil, materialize_transactions: true) end
set_standard_conforming_strings() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 422 def set_standard_conforming_strings internal_execute("SET standard_conforming_strings = on", "SCHEMA") end
supports_advisory_locks?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 430 def supports_advisory_locks? true end
supports_bulk_alter?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 188 def supports_bulk_alter? true end
supports_check_constraints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 220 def supports_check_constraints? true end
supports_comments?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 252 def supports_comments? true end
supports_common_table_expressions?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 461 def supports_common_table_expressions? true end
supports_datetime_with_precision?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 244 def supports_datetime_with_precision? true end
supports_ddl_transactions?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 426 def supports_ddl_transactions? true end
supports_deferrable_constraints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 236 def supports_deferrable_constraints? true end
supports_exclusion_constraints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 224 def supports_exclusion_constraints? true end
supports_explain?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 434 def supports_explain? true end
supports_expression_index?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 208 def supports_expression_index? true end
supports_extensions?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 438 def supports_extensions? true end
supports_foreign_keys?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 216 def supports_foreign_keys? true end
supports_foreign_tables?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 446 def supports_foreign_tables? true end
supports_index_include?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 204 def supports_index_include? database_version >= 11_00_00 # >= 11.0 end
supports_index_sort_order?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 192 def supports_index_sort_order? true end
supports_insert_on_conflict?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 268 def supports_insert_on_conflict? database_version >= 9_05_00 # >= 9.5 end
supports_insert_returning?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 264 def supports_insert_returning? true end
supports_json?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 248 def supports_json? true end
supports_lazy_transactions?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 465 def supports_lazy_transactions? true end
supports_materialized_views?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 442 def supports_materialized_views? true end
supports_nulls_not_distinct?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 283 def supports_nulls_not_distinct? database_version >= 15_00_00 # >= 15.0 end
supports_optimizer_hints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 454 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?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 200 def supports_partial_index? true end
supports_partitioned_indexes?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 196 def supports_partitioned_indexes? database_version >= 11_00_00 # >= 11.0 end
supports_pgcrypto_uuid?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 450 def supports_pgcrypto_uuid? database_version >= 9_04_00 # >= 9.4 end
supports_restart_db_transaction?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 260 def supports_restart_db_transaction? database_version >= 12_00_00 # >= 12.0 end
supports_savepoints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 256 def supports_savepoints? true end
supports_transaction_isolation?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 212 def supports_transaction_isolation? true end
supports_unique_constraints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 228 def supports_unique_constraints? true end
supports_validate_constraints?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 232 def supports_validate_constraints? true end
supports_views?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 240 def supports_views? true end
supports_virtual_columns?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 275 def supports_virtual_columns? database_version >= 12_00_00 # >= 12.0 end
use_insert_returning?() 链接
Source: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 640 def use_insert_returning? @use_insert_returning end