activerecord-cockroachdb-adapter 5.2.0 → 5.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46f54513723481232d2a5370abffb158a9345528df0a5273ddc25ee9023ced0a
4
- data.tar.gz: b446b3bbead5b53abaa0d4a04c52b5107ee5b6f72ab05b0e9ebfa622b4f638ce
3
+ metadata.gz: b2292eb1fe9b5352ccb2a135ee1681b342403f086d38d5c78f354d97008097fe
4
+ data.tar.gz: 7b144a460690d0a6eab7d827eb1e297c67f94be4191d8c949f33d74e90050a88
5
5
  SHA512:
6
- metadata.gz: 04102aa919b63c395af75de04ce50988662c4502823d532712c8ba3cf7f2741cb83903de11fd4aceb526499159ced116c92b72f75ec08270a37ed8133fab45a7
7
- data.tar.gz: 1c64a1cb23146aa20ddd210d9756c3131fab8a9590ab16eac38ee8e28ee2aa6c5bb1d6fb7df4817ee2f24f1ef74933de274114e73819f3d1f4096904b541895d
6
+ metadata.gz: 6424288bb2dce9c2a530f3d2b0edd303c156fdd8dd85822756f9953ca7ebaff4cc32fed8cc233c580e570f561797d38ca741837edeccf5c4e95639b7e2dab816
7
+ data.tar.gz: 0d69e3fbf8e5809429608bbd292269affc21d88afcd7687a26443e6bbb55754bd623ba4d62da484a1ad4415f6633ba9f49eb57ba1e7d54ba632d3fc30e922eaa
data/README.md CHANGED
@@ -7,7 +7,7 @@ CockroachDB adapter for ActiveRecord 4 and 5. This is a lightweight extension of
7
7
  Add this line to your project's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'activerecord-cockroachdb-adapter', '~> 0.2'
10
+ gem 'activerecord-cockroachdb-adapter', '~> 5.2.0'
11
11
  ```
12
12
 
13
13
  If you're using Rails 4.x, use the `0.1.x` versions of this gem.
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "activerecord-cockroachdb-adapter"
7
- spec.version = "5.2.0"
7
+ spec.version = "5.2.1"
8
8
  spec.licenses = ["Apache-2.0"]
9
9
  spec.authors = ["Cockroach Labs"]
10
10
  spec.email = ["cockroach-db@googlegroups.com"]
@@ -3,7 +3,7 @@
3
3
  set -euox pipefail
4
4
 
5
5
  # Download CockroachDB
6
- VERSION=v20.1.0-rc.2
6
+ VERSION=v20.2.1
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
 
@@ -83,8 +83,7 @@ module ActiveRecord
83
83
  end
84
84
 
85
85
  def supports_partial_index?
86
- # See cockroachdb/cockroach#9683
87
- false
86
+ @crdb_version >= 202
88
87
  end
89
88
 
90
89
  def supports_expression_index?
@@ -115,6 +114,10 @@ module ActiveRecord
115
114
  false
116
115
  end
117
116
 
117
+ def supports_string_to_array_coercion?
118
+ @crdb_version >= 202
119
+ end
120
+
118
121
  # This is hardcoded to 63 (as previously was in ActiveRecord 5.0) to aid in
119
122
  # migration from PostgreSQL to CockroachDB. In practice, this limitation
120
123
  # is arbitrary since CockroachDB supports index name lengths and table alias
@@ -130,6 +133,25 @@ module ActiveRecord
130
133
  alias index_name_length max_identifier_length
131
134
  alias table_alias_length max_identifier_length
132
135
 
136
+ def initialize(connection, logger, conn_params, config)
137
+ super(connection, logger, conn_params, config)
138
+ crdb_version_string = query_value("SHOW crdb_version")
139
+ if crdb_version_string.include? "v1."
140
+ version_num = 1
141
+ elsif crdb_version_string.include? "v2."
142
+ version_num 2
143
+ elsif crdb_version_string.include? "v19.1."
144
+ version_num = 191
145
+ elsif crdb_version_string.include? "v19.2."
146
+ version_num = 192
147
+ elsif crdb_version_string.include? "v20.1."
148
+ version_num = 201
149
+ else
150
+ version_num = 202
151
+ end
152
+ @crdb_version = version_num
153
+ end
154
+
133
155
  private
134
156
 
135
157
  def initialize_type_map(m = type_map)
@@ -202,7 +224,8 @@ module ActiveRecord
202
224
  def extract_value_from_default(default)
203
225
  super ||
204
226
  extract_escaped_string_from_default(default) ||
205
- extract_time_from_default(default)
227
+ extract_time_from_default(default) ||
228
+ extract_empty_array_from_default(default)
206
229
  end
207
230
 
208
231
  # Both PostgreSQL and CockroachDB use C-style string escapes under the
@@ -244,6 +267,15 @@ module ActiveRecord
244
267
  nil
245
268
  end
246
269
 
270
+ # CockroachDB stores default values for arrays in the `ARRAY[...]` format.
271
+ # In general, it is hard to parse that, but it is easy to handle the common
272
+ # case of an empty array.
273
+ def extract_empty_array_from_default(default)
274
+ return unless supports_string_to_array_coercion?
275
+ return unless default =~ /\AARRAY\[\]\z/
276
+ return "{}"
277
+ end
278
+
247
279
  # end private
248
280
  end
249
281
  end
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: 5.2.0
4
+ version: 5.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cockroach Labs
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-04 00:00:00.000000000 Z
11
+ date: 2020-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -77,7 +77,7 @@ licenses:
77
77
  - Apache-2.0
78
78
  metadata:
79
79
  allowed_push_host: https://rubygems.org
80
- post_install_message:
80
+ post_install_message:
81
81
  rdoc_options: []
82
82
  require_paths:
83
83
  - lib
@@ -92,8 +92,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  requirements: []
95
- rubygems_version: 3.1.2
96
- signing_key:
95
+ rubygems_version: 3.1.4
96
+ signing_key:
97
97
  specification_version: 4
98
98
  summary: CockroachDB adapter for ActiveRecord.
99
99
  test_files: []