activerecord-pg-extensions 0.2.0 → 0.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: abfb428bb45f993d1a1ee897e81be0372dafc62b5a345c433eb9e69c821ba100
4
- data.tar.gz: d8a2f84e3a2a70576d165e1ad56a17d2cb122acc1bf784a9a17c969cc3f018a8
3
+ metadata.gz: 5c618a82f7b01b308540312e68b6764d975cb6e9594d619996a5ce7502a0b72c
4
+ data.tar.gz: d5b9179b9b7d2761c360092e1ff9e1c8ce27f6f49c39cb7e0e9a4f1b0d7ed97f
5
5
  SHA512:
6
- metadata.gz: 4e83d36db41c570b469ccac0e931b0a3ce04536319b9a357e28225b6c3adb613d1cd300993b7eb9c45733ea54e2b3c3b2ab79a51a932c428aa054dae13fb138d
7
- data.tar.gz: 0f404b7d50dd5e48cdf729987888c164f133301da6b1be5867fa6d8c1aa3ba5223eae556778c082ad31afb10bccdc2eecba1f166f69c3b12311630047dea2a55
6
+ metadata.gz: edf57be20052135e65634cb992948ce612a4a5d107d6fc5e8e3de50a420cc7de8afe61a4311981a2e4684060f25ee9ceb97a6997ee22cb80c09ea6c94b2dda24
7
+ data.tar.gz: ad6a7c3da37ed59d2a110d25217e2e7dba90fec35b448f3446d91a43874c86c32eb7672f783acb0e69561d9353b950df75e78d683800b594c1d1a0193f16a9c8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.1] - 2021-06-22
4
+
5
+ - Ensure numeric is in the PG type map for Rails 6.0. So that lsn_diff will
6
+ return a numeric, instead of a string.
7
+
3
8
  ## [0.2.0] - 2021-06-07
4
9
 
5
10
  - Add PostgreSQLAdapter#set_replica_identity
@@ -235,6 +235,51 @@ module ActiveRecord
235
235
 
236
236
  private
237
237
 
238
+ if ::Rails.version < "6.1"
239
+ # significant change: add PG::TextDecoder::Numeric
240
+ def add_pg_decoders
241
+ @default_timezone = nil
242
+ @timestamp_decoder = nil
243
+
244
+ coders_by_name = {
245
+ "int2" => PG::TextDecoder::Integer,
246
+ "int4" => PG::TextDecoder::Integer,
247
+ "int8" => PG::TextDecoder::Integer,
248
+ "oid" => PG::TextDecoder::Integer,
249
+ "float4" => PG::TextDecoder::Float,
250
+ "float8" => PG::TextDecoder::Float,
251
+ "bool" => PG::TextDecoder::Boolean,
252
+ "numeric" => PG::TextDecoder::Numeric
253
+ }
254
+
255
+ if defined?(PG::TextDecoder::TimestampUtc)
256
+ # Use native PG encoders available since pg-1.1
257
+ coders_by_name["timestamp"] = PG::TextDecoder::TimestampUtc
258
+ coders_by_name["timestamptz"] = PG::TextDecoder::TimestampWithTimeZone
259
+ end
260
+
261
+ known_coder_types = coders_by_name.keys.map { |n| quote(n) }
262
+ query = <<~SQL.format(known_coder_types.join(", "))
263
+ SELECT t.oid, t.typname
264
+ FROM pg_type as t
265
+ WHERE t.typname IN (%s)
266
+ SQL
267
+ coders = execute_and_clear(query, "SCHEMA", []) do |result|
268
+ result
269
+ .map { |row| construct_coder(row, coders_by_name[row["typname"]]) }
270
+ .compact
271
+ end
272
+
273
+ map = PG::TypeMapByOid.new
274
+ coders.each { |coder| map.add_coder(coder) }
275
+ @connection.type_map_for_results = map
276
+
277
+ # extract timestamp decoder for use in update_typemap_for_default_timezone
278
+ @timestamp_decoder = coders.find { |coder| coder.name == "timestamp" }
279
+ update_typemap_for_default_timezone
280
+ end
281
+ end
282
+
238
283
  def initialize_type_map(map = type_map)
239
284
  map.register_type "pg_lsn", ActiveRecord::ConnectionAdapters::PostgreSQL::OID::SpecializedString.new(:pg_lsn)
240
285
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  module PGExtensions
5
- VERSION = "0.2.0"
5
+ VERSION = "0.2.1"
6
6
  end
7
7
  end
@@ -243,5 +243,11 @@ describe ActiveRecord::ConnectionAdapters::PostgreSQLAdapter do
243
243
  expect(connection.in_recovery?).to eq false
244
244
  end
245
245
  end
246
+
247
+ describe "#select_value" do
248
+ it "has casts numeric types" do
249
+ expect(connection.select_value("SELECT factorial(2)")).to eq 2
250
+ end
251
+ end
246
252
  end
247
253
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-pg-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-07 00:00:00.000000000 Z
11
+ date: 2021-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord