activerecord-cockroachdb-adapter 6.1.0 → 6.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/README.md +5 -3
- data/activerecord-cockroachdb-adapter.gemspec +6 -2
- data/build/Dockerfile +1 -1
- data/build/teamcity-test.sh +2 -1
- data/docker.sh +2 -5
- data/lib/active_record/connection_adapters/cockroachdb/referential_integrity.rb +1 -1
- data/lib/active_record/connection_adapters/cockroachdb/schema_statements.rb +35 -0
- data/lib/active_record/connection_adapters/cockroachdb_adapter.rb +89 -43
- data/lib/version.rb +5 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee61867492cc8b0c28f58b9090625a08914e610e6a1732924a2b4d925a01a714
|
4
|
+
data.tar.gz: d7ae4281ca3738f92e84df29243c687693cf8aed64ba006d9c44541c25ba2029
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c61ca3b032274dc8cc5063e55465fdc2b418bbda7c6d8a4093405d61c5c2b49758faaf77f95a76eb0c46101e3ec0a4f9c1442744abe49bcc747a0b86de64bec9
|
7
|
+
data.tar.gz: f91ea52d72dcef0c50e87186b12f10c7118882e48e10ef667c64e59da159493ea8dd23b5bbb4256c9222d703afaf89d7554831d2ef523096151af9fdf9faaf9f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 6.1.4 - 2021-12-09
|
4
|
+
|
5
|
+
- Add support for CockroachDB v21.2.
|
6
|
+
|
7
|
+
## 6.1.3 - 2021-07-28
|
8
|
+
|
9
|
+
- Santitize the input to the telemetry query that is issued on startup.
|
10
|
+
|
11
|
+
## 6.1.2 - 2021-05-20
|
12
|
+
|
13
|
+
- Fix a bug where starting the driver can result in a ConnectionNotEstablished error.
|
14
|
+
|
15
|
+
## 6.1.1 - 2021-05-14
|
16
|
+
|
17
|
+
- Fix a bug where starting the driver can result in a NoDatabaseError.
|
18
|
+
|
3
19
|
## 6.1.0 - 2021-04-26
|
4
20
|
|
5
21
|
- Add a telemetry query on start-up. This helps the Cockroach Labs team
|
data/README.md
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
# ActiveRecord CockroachDB Adapter
|
2
2
|
|
3
|
-
CockroachDB adapter for ActiveRecord
|
3
|
+
CockroachDB adapter for ActiveRecord 5 and 6. This is a lightweight extension of the PostgreSQL adapter that establishes compatibility with [CockroachDB](https://github.com/cockroachdb/cockroach).
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Add this line to your project's Gemfile:
|
8
8
|
|
9
9
|
```ruby
|
10
|
-
gem 'activerecord-cockroachdb-adapter', '~>
|
10
|
+
gem 'activerecord-cockroachdb-adapter', '~> 6.1.0'
|
11
11
|
```
|
12
12
|
|
13
|
-
If you're using Rails
|
13
|
+
If you're using Rails 5.2, use the `5.2.x` versions of this gem.
|
14
|
+
|
15
|
+
If you're using Rails 6.0, use the `6.0.x` versions of this gem.
|
14
16
|
|
15
17
|
In `database.yml`, use the following adapter setting:
|
16
18
|
|
@@ -1,10 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
|
6
|
+
require './lib/version.rb'
|
7
|
+
version = ActiveRecord::COCKROACH_DB_ADAPTER_VERSION
|
8
|
+
|
5
9
|
Gem::Specification.new do |spec|
|
6
10
|
spec.name = "activerecord-cockroachdb-adapter"
|
7
|
-
spec.version =
|
11
|
+
spec.version = version
|
8
12
|
spec.licenses = ["Apache-2.0"]
|
9
13
|
spec.authors = ["Cockroach Labs"]
|
10
14
|
spec.email = ["cockroach-db@googlegroups.com"]
|
data/build/Dockerfile
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
FROM cockroachdb/example-orms-builder:20200413-1918
|
5
5
|
|
6
6
|
# Native dependencies for libxml-ruby and sqlite3.
|
7
|
-
RUN apt-get update -y && apt-get install -y \
|
7
|
+
RUN apt-get --allow-releaseinfo-change update -y && apt-get install -y \
|
8
8
|
libxslt-dev \
|
9
9
|
libxml2-dev \
|
10
10
|
libsqlite3-dev \
|
data/build/teamcity-test.sh
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
set -euox pipefail
|
4
4
|
|
5
5
|
# Download CockroachDB
|
6
|
-
VERSION=
|
6
|
+
VERSION=v21.2.0
|
7
7
|
wget -qO- https://binaries.cockroachdb.com/cockroach-$VERSION.linux-amd64.tgz | tar xvz
|
8
8
|
readonly COCKROACH=./cockroach-$VERSION.linux-amd64/cockroach
|
9
9
|
|
@@ -36,6 +36,7 @@ run_cockroach() {
|
|
36
36
|
cockroach sql --insecure -e 'SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false;'
|
37
37
|
cockroach sql --insecure -e 'SET CLUSTER SETTING sql.stats.histogram_collection.enabled = false;'
|
38
38
|
cockroach sql --insecure -e "SET CLUSTER SETTING jobs.retention_time = '180s';"
|
39
|
+
cockroach sql --insecure -e "SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true'"
|
39
40
|
}
|
40
41
|
|
41
42
|
# Install ruby dependencies.
|
data/docker.sh
CHANGED
@@ -4,10 +4,7 @@
|
|
4
4
|
|
5
5
|
set -euox pipefail
|
6
6
|
|
7
|
-
DOCKER_IMAGE_TAG=activerecord_test_container
|
8
|
-
|
9
|
-
# Build the docker image to use.
|
10
|
-
docker build -t ${DOCKER_IMAGE_TAG} build/
|
7
|
+
DOCKER_IMAGE_TAG=cockroachdb/activerecord_test_container:20210914
|
11
8
|
|
12
9
|
# Absolute path to this repository.
|
13
10
|
repo_root=$(cd "$(dirname "${0}")" && pwd)
|
@@ -26,7 +23,7 @@ container_root=${repo_root}/docker_root
|
|
26
23
|
mkdir -p "${container_root}"/{etc,home,home/"${username}"/activerecord-cockroachdb-adapter,home/.gems}
|
27
24
|
echo "${username}:x:${uid_gid}::/home/${username}:/bin/bash" > "${container_root}/etc/passwd"
|
28
25
|
|
29
|
-
docker run \
|
26
|
+
exec docker run \
|
30
27
|
--volume="${container_root}/etc/passwd:/etc/passwd" \
|
31
28
|
--volume="${container_root}/home/${username}:/home/${username}" \
|
32
29
|
--volume="${repo_root}:/home/${username}/activerecord-cockroachdb-adapter" \
|
@@ -22,7 +22,7 @@ module ActiveRecord
|
|
22
22
|
|
23
23
|
foreign_keys.each do |foreign_key|
|
24
24
|
begin
|
25
|
-
add_foreign_key(foreign_key.from_table, foreign_key.to_table, foreign_key.options)
|
25
|
+
add_foreign_key(foreign_key.from_table, foreign_key.to_table, **foreign_key.options)
|
26
26
|
rescue ActiveRecord::StatementInvalid => error
|
27
27
|
if error.cause.class == PG::DuplicateObject
|
28
28
|
# This error is safe to ignore because the yielded caller
|
@@ -32,6 +32,41 @@ module ActiveRecord
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
# override
|
36
|
+
# Modified version of the postgresql foreign_keys method.
|
37
|
+
# Replaces t2.oid::regclass::text with t2.relname since this is
|
38
|
+
# more efficient in CockroachDB.
|
39
|
+
def foreign_keys(table_name)
|
40
|
+
scope = quoted_scope(table_name)
|
41
|
+
fk_info = exec_query(<<~SQL, "SCHEMA")
|
42
|
+
SELECT t2.relname AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete, c.convalidated AS valid
|
43
|
+
FROM pg_constraint c
|
44
|
+
JOIN pg_class t1 ON c.conrelid = t1.oid
|
45
|
+
JOIN pg_class t2 ON c.confrelid = t2.oid
|
46
|
+
JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
|
47
|
+
JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
|
48
|
+
JOIN pg_namespace t3 ON c.connamespace = t3.oid
|
49
|
+
WHERE c.contype = 'f'
|
50
|
+
AND t1.relname = #{scope[:name]}
|
51
|
+
AND t3.nspname = #{scope[:schema]}
|
52
|
+
ORDER BY c.conname
|
53
|
+
SQL
|
54
|
+
|
55
|
+
fk_info.map do |row|
|
56
|
+
options = {
|
57
|
+
column: row["column"],
|
58
|
+
name: row["name"],
|
59
|
+
primary_key: row["primary_key"]
|
60
|
+
}
|
61
|
+
|
62
|
+
options[:on_delete] = extract_foreign_key_action(row["on_delete"])
|
63
|
+
options[:on_update] = extract_foreign_key_action(row["on_update"])
|
64
|
+
options[:validate] = row["valid"]
|
65
|
+
|
66
|
+
ForeignKeyDefinition.new(table_name, row["to_table"], options)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
35
70
|
# CockroachDB uses unique_rowid() for primary keys, not sequences. It's
|
36
71
|
# possible to force a table to use sequences, but since it's not the
|
37
72
|
# default behavior we'll always return nil for default_sequence_name.
|
@@ -17,6 +17,7 @@ require "active_record/connection_adapters/cockroachdb/oid/type_map_initializer"
|
|
17
17
|
require "active_record/connection_adapters/cockroachdb/oid/spatial"
|
18
18
|
require "active_record/connection_adapters/cockroachdb/oid/interval"
|
19
19
|
require "active_record/connection_adapters/cockroachdb/arel_tosql"
|
20
|
+
require_relative "../../version"
|
20
21
|
|
21
22
|
# Run to ignore spatial tables that will break schemna dumper.
|
22
23
|
# Defined in ./setup.rb
|
@@ -45,7 +46,9 @@ module ActiveRecord
|
|
45
46
|
# This rescue flow appears in new_client, but it is needed here as well
|
46
47
|
# since Cockroach will sometimes not raise until a query is made.
|
47
48
|
rescue ActiveRecord::StatementInvalid => error
|
48
|
-
|
49
|
+
no_db_err_check1 = conn_params && conn_params[:dbname] && error.cause.message.include?(conn_params[:dbname])
|
50
|
+
no_db_err_check2 = conn_params && conn_params[:dbname] && error.cause.message.include?("pg_type")
|
51
|
+
if no_db_err_check1 || no_db_err_check2
|
49
52
|
raise ActiveRecord::NoDatabaseError
|
50
53
|
else
|
51
54
|
raise ActiveRecord::ConnectionNotEstablished, error.message
|
@@ -63,18 +66,28 @@ module ActiveRecord
|
|
63
66
|
adapter = pool_config.db_config.configuration_hash[:adapter]
|
64
67
|
return if disable_telemetry || adapter != "cockroachdb"
|
65
68
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
69
|
+
begin
|
70
|
+
with_connection do |conn|
|
71
|
+
if conn.active?
|
72
|
+
begin
|
73
|
+
ar_version = conn.quote("ActiveRecord %d.%d" % [ActiveRecord::VERSION::MAJOR,
|
74
|
+
ActiveRecord::VERSION::MINOR])
|
75
|
+
ar_query = "SELECT crdb_internal.increment_feature_counter(%s)" % ar_version
|
76
|
+
adapter_version = conn.quote("activerecord-cockroachdb-adapter #{ActiveRecord::COCKROACH_DB_ADAPTER_VERSION}")
|
77
|
+
adapter_query = "SELECT crdb_internal.increment_feature_counter(%s)" % adapter_version
|
78
|
+
|
79
|
+
conn.execute(ar_query)
|
80
|
+
conn.execute(adapter_query)
|
81
|
+
rescue ActiveRecord::StatementInvalid
|
82
|
+
# The increment_feature_counter built-in is not supported on this
|
83
|
+
# CockroachDB version. Ignore.
|
84
|
+
rescue StandardError => e
|
85
|
+
conn.logger.warn "Unexpected error when incrementing feature counter: #{e}"
|
86
|
+
end
|
76
87
|
end
|
77
88
|
end
|
89
|
+
rescue StandardError
|
90
|
+
# Prevent failures on db creation and parallel testing.
|
78
91
|
end
|
79
92
|
end
|
80
93
|
end
|
@@ -98,7 +111,7 @@ module ActiveRecord
|
|
98
111
|
st_polygon: {},
|
99
112
|
}
|
100
113
|
|
101
|
-
# http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
|
114
|
+
# http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
|
102
115
|
DEFAULT_SRID = 0
|
103
116
|
|
104
117
|
include CockroachDB::SchemaStatements
|
@@ -162,12 +175,11 @@ module ActiveRecord
|
|
162
175
|
end
|
163
176
|
|
164
177
|
def supports_partial_index?
|
165
|
-
@crdb_version >=
|
178
|
+
@crdb_version >= 2020
|
166
179
|
end
|
167
180
|
|
168
181
|
def supports_expression_index?
|
169
|
-
|
170
|
-
false
|
182
|
+
@crdb_version >= 2122
|
171
183
|
end
|
172
184
|
|
173
185
|
def supports_datetime_with_precision?
|
@@ -175,12 +187,10 @@ module ActiveRecord
|
|
175
187
|
end
|
176
188
|
|
177
189
|
def supports_comments?
|
178
|
-
|
179
|
-
false
|
190
|
+
@crdb_version >= 2010
|
180
191
|
end
|
181
192
|
|
182
193
|
def supports_comments_in_create?
|
183
|
-
# See cockroachdb/cockroach#19472.
|
184
194
|
false
|
185
195
|
end
|
186
196
|
|
@@ -189,12 +199,11 @@ module ActiveRecord
|
|
189
199
|
end
|
190
200
|
|
191
201
|
def supports_virtual_columns?
|
192
|
-
# See cockroachdb/cockroach#20882.
|
193
202
|
false
|
194
203
|
end
|
195
204
|
|
196
205
|
def supports_string_to_array_coercion?
|
197
|
-
@crdb_version >=
|
206
|
+
@crdb_version >= 2020
|
198
207
|
end
|
199
208
|
|
200
209
|
def supports_partitioned_indexes?
|
@@ -225,15 +234,31 @@ module ActiveRecord
|
|
225
234
|
elsif crdb_version_string.include? "v2."
|
226
235
|
version_num 2
|
227
236
|
elsif crdb_version_string.include? "v19.1."
|
228
|
-
version_num =
|
237
|
+
version_num = 1910
|
229
238
|
elsif crdb_version_string.include? "v19.2."
|
230
|
-
version_num =
|
239
|
+
version_num = 1920
|
231
240
|
elsif crdb_version_string.include? "v20.1."
|
232
|
-
version_num =
|
241
|
+
version_num = 2010
|
242
|
+
elsif crdb_version_string.include? "v20.2."
|
243
|
+
version_num = 2020
|
244
|
+
elsif crdb_version_string.include? "v21.1."
|
245
|
+
version_num = 2110
|
246
|
+
elsif crdb_version_string.include? "v21.2.0"
|
247
|
+
version_num = 2120
|
233
248
|
else
|
234
|
-
version_num =
|
249
|
+
version_num = 2121
|
235
250
|
end
|
236
251
|
@crdb_version = version_num
|
252
|
+
|
253
|
+
# NOTE: this is normally in configure_connection, but that is run
|
254
|
+
# before crdb_version is determined. Once all supported versions
|
255
|
+
# of CockroachDB support SET intervalstyle it can safely be moved
|
256
|
+
# back.
|
257
|
+
# Set interval output format to ISO 8601 for ease of parsing by ActiveSupport::Duration.parse
|
258
|
+
if @crdb_version >= 2120
|
259
|
+
execute("SET intervalstyle_enabled = true", "SCHEMA")
|
260
|
+
execute("SET intervalstyle = iso_8601", "SCHEMA")
|
261
|
+
end
|
237
262
|
end
|
238
263
|
|
239
264
|
def self.database_exists?(config)
|
@@ -272,12 +297,9 @@ module ActiveRecord
|
|
272
297
|
precision = extract_precision(sql_type)
|
273
298
|
scale = extract_scale(sql_type)
|
274
299
|
|
275
|
-
# TODO(#178) this should never use DecimalWithoutScale since scale
|
276
|
-
# is assumed to be 0 if it is not explicitly defined.
|
277
|
-
#
|
278
300
|
# If fmod is -1, that means that precision is defined but not
|
279
301
|
# scale, or neither is defined.
|
280
|
-
if fmod && fmod == -1
|
302
|
+
if fmod && fmod == -1 && !precision.nil?
|
281
303
|
# Below comment is from ActiveRecord
|
282
304
|
# FIXME: Remove this class, and the second argument to
|
283
305
|
# lookups on PG
|
@@ -344,7 +366,8 @@ module ActiveRecord
|
|
344
366
|
super ||
|
345
367
|
extract_escaped_string_from_default(default) ||
|
346
368
|
extract_time_from_default(default) ||
|
347
|
-
extract_empty_array_from_default(default)
|
369
|
+
extract_empty_array_from_default(default) ||
|
370
|
+
extract_decimal_from_default(default)
|
348
371
|
end
|
349
372
|
|
350
373
|
# Both PostgreSQL and CockroachDB use C-style string escapes under the
|
@@ -390,11 +413,19 @@ module ActiveRecord
|
|
390
413
|
# In general, it is hard to parse that, but it is easy to handle the common
|
391
414
|
# case of an empty array.
|
392
415
|
def extract_empty_array_from_default(default)
|
393
|
-
return unless supports_string_to_array_coercion?
|
416
|
+
return unless supports_string_to_array_coercion?
|
394
417
|
return unless default =~ /\AARRAY\[\]\z/
|
395
418
|
return "{}"
|
396
419
|
end
|
397
420
|
|
421
|
+
# This method exists to extract the decimal defaults (e.g. scientific notation)
|
422
|
+
# that don't get parsed correctly
|
423
|
+
def extract_decimal_from_default(default)
|
424
|
+
Float(default).to_s
|
425
|
+
rescue
|
426
|
+
nil
|
427
|
+
end
|
428
|
+
|
398
429
|
# override
|
399
430
|
# This method makes a query to gather information about columns
|
400
431
|
# in a table. It returns an array of arrays (one for each col) and
|
@@ -408,7 +439,21 @@ module ActiveRecord
|
|
408
439
|
#
|
409
440
|
# @see: https://github.com/rails/rails/blob/8695b028261bdd244e254993255c6641bdbc17a5/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L829
|
410
441
|
def column_definitions(table_name)
|
411
|
-
fields =
|
442
|
+
fields = query(<<~SQL, "SCHEMA")
|
443
|
+
SELECT a.attname, format_type(a.atttypid, a.atttypmod),
|
444
|
+
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
|
445
|
+
c.collname, NULL AS comment,
|
446
|
+
#{supports_virtual_columns? ? 'attgenerated' : quote('')} as attgenerated
|
447
|
+
FROM pg_attribute a
|
448
|
+
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
|
449
|
+
LEFT JOIN pg_type t ON a.atttypid = t.oid
|
450
|
+
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
|
451
|
+
WHERE a.attrelid = #{quote(quote_table_name(table_name))}::regclass
|
452
|
+
AND a.attnum > 0 AND NOT a.attisdropped
|
453
|
+
ORDER BY a.attnum
|
454
|
+
SQL
|
455
|
+
|
456
|
+
crdb_fields = crdb_column_definitions(table_name)
|
412
457
|
|
413
458
|
# Use regex comparison because if a type is an array it will
|
414
459
|
# have [] appended to the end of it.
|
@@ -418,32 +463,33 @@ module ActiveRecord
|
|
418
463
|
/interval/,
|
419
464
|
/numeric/
|
420
465
|
]
|
466
|
+
|
421
467
|
re = Regexp.union(target_types)
|
422
468
|
fields.map do |field|
|
423
469
|
dtype = field[1]
|
424
|
-
if re.match(dtype)
|
425
|
-
|
426
|
-
|
427
|
-
field
|
428
|
-
end
|
470
|
+
field[1] = crdb_fields[field[0]][2].downcase if re.match(dtype)
|
471
|
+
field[7] = crdb_fields[field[0]][1]&.gsub!(/^\'|\'?$/, '')
|
472
|
+
field
|
429
473
|
end
|
430
474
|
end
|
431
475
|
|
476
|
+
# Fetch the column comment because it's faster this way
|
432
477
|
# Use the crdb_sql_type instead of the sql_type returned by
|
433
478
|
# column_definitions. This will include limit,
|
434
479
|
# precision, and scale information in the type.
|
435
480
|
# Ex. geometry -> geometry(point, 4326)
|
436
|
-
def
|
437
|
-
|
438
|
-
data_type = \
|
481
|
+
def crdb_column_definitions(table_name)
|
482
|
+
fields = \
|
439
483
|
query(<<~SQL, "SCHEMA")
|
440
|
-
SELECT c.crdb_sql_type
|
484
|
+
SELECT c.column_name, c.column_comment, c.crdb_sql_type
|
441
485
|
FROM information_schema.columns c
|
442
486
|
WHERE c.table_name = #{quote(table_name)}
|
443
|
-
AND c.column_name = #{quote(col_name)}
|
444
487
|
SQL
|
445
|
-
|
446
|
-
|
488
|
+
|
489
|
+
fields.reduce({}) do |a, e|
|
490
|
+
a[e[0]] = e
|
491
|
+
a
|
492
|
+
end
|
447
493
|
end
|
448
494
|
|
449
495
|
# override
|
data/lib/version.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-cockroachdb-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
4
|
+
version: 6.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cockroach Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- lib/active_record/connection_adapters/cockroachdb/type.rb
|
96
96
|
- lib/active_record/connection_adapters/cockroachdb_adapter.rb
|
97
97
|
- lib/activerecord-cockroachdb-adapter.rb
|
98
|
+
- lib/version.rb
|
98
99
|
homepage: https://github.com/cockroachdb/activerecord-cockroachdb-adapter
|
99
100
|
licenses:
|
100
101
|
- Apache-2.0
|
@@ -115,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
116
|
- !ruby/object:Gem::Version
|
116
117
|
version: '0'
|
117
118
|
requirements: []
|
118
|
-
rubygems_version: 3.1.
|
119
|
+
rubygems_version: 3.1.6
|
119
120
|
signing_key:
|
120
121
|
specification_version: 4
|
121
122
|
summary: CockroachDB adapter for ActiveRecord.
|