Class: ActiveRecord::ConnectionAdapters::CockroachDBAdapter
Constant Summary
collapse
- ADAPTER_NAME =
"CockroachDB".freeze
- DEFAULT_PRIMARY_KEY =
"rowid"
- SPATIAL_COLUMN_OPTIONS =
{
geography: { geographic: true },
geometry: {},
geometry_collection: {},
line_string: {},
multi_line_string: {},
multi_point: {},
multi_polygon: {},
spatial: {},
st_point: {},
st_polygon: {},
}
- DEFAULT_SRID =
0
Class Method Summary
collapse
Instance Method Summary
collapse
#insert_fixtures_set, #transaction_isolation_levels
#disable_referential_integrity
#add_index, #create_table_definition, #default_sequence_name, #native_database_types, #new_column_from_field, #primary_key, #reset_pk_sequence!, #spatial_column_info, #type_to_sql
Constructor Details
#initialize(connection, logger, conn_params, config) ⇒ CockroachDBAdapter
Returns a new instance of CockroachDBAdapter.
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 219
def initialize(connection, logger, conn_params, config)
super(connection, logger, conn_params, config)
crdb_version_string = query_value("SHOW crdb_version")
if crdb_version_string.include? "v1."
version_num = 1
elsif crdb_version_string.include? "v2."
version_num 2
elsif crdb_version_string.include? "v19.1."
version_num = 191
elsif crdb_version_string.include? "v19.2."
version_num = 192
elsif crdb_version_string.include? "v20.1."
version_num = 201
else
version_num = 202
end
@crdb_version = version_num
end
|
Class Method Details
.database_exists?(config) ⇒ Boolean
239
240
241
242
243
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 239
def self.database_exists?(config)
!!ActiveRecord::Base.cockroachdb_connection(config)
rescue ActiveRecord::NoDatabaseError
false
end
|
.spatial_column_options(key) ⇒ Object
109
110
111
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 109
def self.spatial_column_options(key)
SPATIAL_COLUMN_OPTIONS[key]
end
|
Instance Method Details
#debugging? ⇒ Boolean
130
131
132
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 130
def debugging?
!!ENV["DEBUG_COCKROACHDB_ADAPTER"]
end
|
#default_srid ⇒ Object
117
118
119
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 117
def default_srid
DEFAULT_SRID
end
|
#max_identifier_length ⇒ Object
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.
213
214
215
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 213
def max_identifier_length
63
end
|
#max_transaction_retries ⇒ Object
134
135
136
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 134
def max_transaction_retries
@max_transaction_retries ||= @config.fetch(:max_transaction_retries, 3)
end
|
#postgis_lib_version ⇒ Object
113
114
115
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 113
def postgis_lib_version
@postgis_lib_version ||= select_value("SELECT PostGIS_Lib_Version()")
end
|
#postgresql_version ⇒ Object
CockroachDB 20.1 can run queries that work against PostgreSQL 10+.
139
140
141
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 139
def postgresql_version
100000
end
|
#srs_database_columns ⇒ Object
121
122
123
124
125
126
127
128
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 121
def srs_database_columns
{
auth_name_column: "auth_name",
auth_srid_column: "auth_srid",
proj4text_column: "proj4text",
srtext_column: "srtext",
}
end
|
#supports_advisory_locks? ⇒ Boolean
187
188
189
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 187
def supports_advisory_locks?
false
end
|
#supports_bulk_alter? ⇒ Boolean
143
144
145
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 143
def supports_bulk_alter?
false
end
|
177
178
179
180
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 177
def
false
end
|
182
183
184
185
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 182
def
false
end
|
#supports_datetime_with_precision? ⇒ Boolean
173
174
175
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 173
def supports_datetime_with_precision?
false
end
|
#supports_ddl_transactions? ⇒ Boolean
152
153
154
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 152
def supports_ddl_transactions?
false
end
|
#supports_expression_index? ⇒ Boolean
168
169
170
171
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 168
def supports_expression_index?
false
end
|
#supports_extensions? ⇒ Boolean
156
157
158
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 156
def supports_extensions?
false
end
|
#supports_json? ⇒ Boolean
147
148
149
150
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 147
def supports_json?
true
end
|
#supports_materialized_views? ⇒ Boolean
160
161
162
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 160
def supports_materialized_views?
false
end
|
#supports_partial_index? ⇒ Boolean
164
165
166
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 164
def supports_partial_index?
@crdb_version >= 202
end
|
#supports_partitioned_indexes? ⇒ Boolean
200
201
202
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 200
def supports_partitioned_indexes?
false
end
|
#supports_string_to_array_coercion? ⇒ Boolean
196
197
198
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 196
def supports_string_to_array_coercion?
@crdb_version >= 202
end
|
#supports_virtual_columns? ⇒ Boolean
191
192
193
194
|
# File 'lib/active_record/connection_adapters/cockroachdb_adapter.rb', line 191
def supports_virtual_columns?
false
end
|