Class: ActiveRecord::ConnectionAdapters::CockroachDBAdapter

Inherits:
PostgreSQLAdapter
  • Object
show all
Includes:
ActiveRecord::ConnectionAdapters::CockroachDB::DatabaseStatements, ActiveRecord::ConnectionAdapters::CockroachDB::Quoting, ActiveRecord::ConnectionAdapters::CockroachDB::ReferentialIntegrity, ActiveRecord::ConnectionAdapters::CockroachDB::SchemaStatements
Defined in:
lib/active_record/connection_adapters/cockroachdb_adapter.rb

Constant Summary collapse

ADAPTER_NAME =
"CockroachDB".freeze
DEFAULT_PRIMARY_KEY =
"rowid"

Instance Method Summary collapse

Methods included from ActiveRecord::ConnectionAdapters::CockroachDB::DatabaseStatements

#insert_fixtures_set, #transaction_isolation_levels

Methods included from ActiveRecord::ConnectionAdapters::CockroachDB::ReferentialIntegrity

#disable_referential_integrity

Methods included from ActiveRecord::ConnectionAdapters::CockroachDB::SchemaStatements

#add_index, #default_sequence_name, #primary_key, #type_to_sql

Instance Method Details

#debugging?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 46

def debugging?
  !!ENV["DEBUG_COCKROACHDB_ADAPTER"]
end

#max_identifier_lengthObject Also known as: index_name_length, table_alias_length

This is hardcoded to 63 (as previously was in ActiveRecord 5.0) to aid in migration from PostgreSQL to CockroachDB. In practice, this limitation is arbitrary since CockroachDB supports index name lengths and table alias lengths far greater than this value. For the time being though, we match the original behavior for PostgreSQL to simplify migrations.

Note that in the migration to ActiveRecord 5.1, this was changed in PostgreSQLAdapter to use ‘SHOW max_identifier_length` (which does not exist in CockroachDB). Therefore, we have to redefine this here.



127
128
129
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 127

def max_identifier_length
  63
end

#max_transaction_retriesObject



50
51
52
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 50

def max_transaction_retries
  @max_transaction_retries ||= @config.fetch(:max_transaction_retries, 3)
end

#postgresql_versionObject

CockroachDB 20.1 can run queries that work against PostgreSQL 10+.



55
56
57
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 55

def postgresql_version
  100000
end

#supports_advisory_locks?Boolean

Returns:

  • (Boolean)


109
110
111
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 109

def supports_advisory_locks?
  false
end

#supports_bulk_alter?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 59

def supports_bulk_alter?
  false
end

#supports_comments?Boolean

Returns:

  • (Boolean)


99
100
101
102
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 99

def supports_comments?
  # See cockroachdb/cockroach#19472.
  false
end

#supports_comments_in_create?Boolean

Returns:

  • (Boolean)


104
105
106
107
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 104

def supports_comments_in_create?
  # See cockroachdb/cockroach#19472.
  false
end

#supports_datetime_with_precision?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 95

def supports_datetime_with_precision?
  false
end

#supports_ddl_transactions?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 68

def supports_ddl_transactions?
  false
end

#supports_expression_index?Boolean

Returns:

  • (Boolean)


90
91
92
93
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 90

def supports_expression_index?
  # See cockroachdb/cockroach#9682
  false
end

#supports_extensions?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 72

def supports_extensions?
  false
end

#supports_json?Boolean

Returns:

  • (Boolean)


63
64
65
66
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 63

def supports_json?
  # FIXME(joey): Add a version check.
  true
end

#supports_materialized_views?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 81

def supports_materialized_views?
  false
end

#supports_partial_index?Boolean

Returns:

  • (Boolean)


85
86
87
88
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 85

def supports_partial_index?
  # See cockroachdb/cockroach#9683
  false
end

#supports_ranges?Boolean

Returns:

  • (Boolean)


76
77
78
79
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 76

def supports_ranges?
  # See cockroachdb/cockroach#17022
  false
end

#supports_virtual_columns?Boolean

Returns:

  • (Boolean)


113
114
115
116
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 113

def supports_virtual_columns?
  # See cockroachdb/cockroach#20882.
  false
end