activerecord-cipherstash-pg-adapter 0.7.0 → 0.7.2

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: afdad58f343c08018a15ea22511db38a98753bf6c9247fc361599a23277403f8
4
- data.tar.gz: 0ad35166f2df40d1ac6f0267ea6d6bb82873558b48c8714cae61e3cb07eb4892
3
+ metadata.gz: d9bf0b9639a218a5da0dde267803a200993b45d5a1da9893f24e09ec259f9035
4
+ data.tar.gz: c8e8a2fc36e7f7aedeea6e18f35726237bd4086c839c70536630d2f7c2938ee6
5
5
  SHA512:
6
- metadata.gz: ec7f1f9f7748f4a4730fa1df4d62199f8ca4b1a62092e19b1318d6d0d8586c4e6e2d7286432c8ccf6f749ffa6bdd595ae5deca17ec80f523e156103703e0b203
7
- data.tar.gz: 86187ee7f4cac227c6f68273c72130d022958dd0a2cd3f13201c3f7ae1bc3f1cb5aef368b555247b554e013d44307d0eef96820387e66ce6eb4c5a9d1980a5e4
6
+ metadata.gz: 4778556b03aacc6573fe0c03d1c348d976ee0e8f03e1f3c6f5e514c8975f7a662c6cb522a531e482f6d3f74ca8fa039eb8faf20fccde4108dad115df389e81f3
7
+ data.tar.gz: 191b9afc5308b6bdb8fd2c9ce315b0bad32b8dcec339d11726e0661a1869fa5a03e3ca24b2c0e6d5bba797237935951eee4371e4ba9ebf08c777cf29aea7f991
data/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
1
7
  ## [Unreleased]
2
8
 
9
+ ## [0.7.2] - 2023-05-02
10
+
11
+ ### Fixed
12
+
13
+ - Fix more module names in ActiveRecord v6 adapter (`CipherstashPG` -> `CiphStashPG`).
14
+
15
+ ## [0.7.1] - 2023-05-02
16
+
17
+ ### Changed
18
+
19
+ - Bump version of cipherstash-pg.
20
+
21
+ ### Fixed
22
+
23
+ - Fix module names in ActiveRecord 6 adapter
24
+
25
+ ## [0.7.0] - 2023-05-01
26
+
27
+ ### Changed
28
+
29
+ - Update PG namespace to use CipherStashPG.
30
+ - Bump version of cipherstash-pg.
31
+
3
32
  ## [0.6.1] - 2023-04-26
4
33
 
5
34
  ### Fixed
@@ -33,6 +62,7 @@
33
62
  - Bump version of cipherstash-pg.
34
63
 
35
64
  ## [0.3.0] - 2023-04-04
65
+
36
66
  ### Added
37
67
 
38
68
  - Support for both Rails 6 + 7.
data/README.md CHANGED
@@ -26,7 +26,12 @@ development:
26
26
 
27
27
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
28
28
 
29
- To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
29
+ To release a new version:
30
+
31
+ - update the version number in `version.rb`.
32
+ - update the CHANGELOG.
33
+ - raise a PR and merge.
34
+ - run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
30
35
 
31
36
  In the github repo:
32
37
 
@@ -31,5 +31,5 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  # Runtime dependencies here; dev+test go in Gemfile.
33
33
  spec.add_dependency "activerecord", ">= 6.0.0", "< 8.0.0"
34
- spec.add_dependency "cipherstash-pg", ">= 1.0.0.beta.3"
34
+ spec.add_dependency "cipherstash-pg", ">= 1.0.0.beta.4"
35
35
  end
@@ -38,8 +38,8 @@ module ActiveRecord
38
38
  conn_params[:user] = conn_params.delete(:username) if conn_params[:username]
39
39
  conn_params[:dbname] = conn_params.delete(:database) if conn_params[:database]
40
40
 
41
- # Forward only valid config params to PG::Connection.connect.
42
- valid_conn_param_keys = PG::Connection.conndefaults_hash.keys + [:requiressl]
41
+ # Forward only valid config params to ::CipherStashPG::Connection.connect.
42
+ valid_conn_param_keys = ::CipherStashPG::Connection.conndefaults_hash.keys + [:requiressl]
43
43
  conn_params.slice!(*valid_conn_param_keys)
44
44
 
45
45
  ConnectionAdapters::CipherStashPGAdapter.new(
@@ -58,7 +58,7 @@ module ActiveRecord
58
58
  class << self
59
59
  def new_client(conn_params)
60
60
  ::CipherStashPG.connect(**conn_params)
61
- rescue ::PG::Error => error
61
+ rescue ::CipherStashPG::Error => error
62
62
  if conn_params && conn_params[:dbname] && error.message.include?(conn_params[:dbname])
63
63
  raise ActiveRecord::NoDatabaseError
64
64
  else
@@ -215,12 +215,12 @@ module ActiveRecord
215
215
  private
216
216
  def dealloc(key)
217
217
  @connection.query "DEALLOCATE #{key}" if connection_active?
218
- rescue PG::Error
218
+ rescue ::CipherStashPG::Error
219
219
  end
220
220
 
221
221
  def connection_active?
222
- @connection.status == PG::CONNECTION_OK
223
- rescue PG::Error
222
+ @connection.status == ::CipherStashPG::CONNECTION_OK
223
+ rescue ::CipherStashPG::Error
224
224
  false
225
225
  end
226
226
  end
@@ -257,7 +257,7 @@ module ActiveRecord
257
257
  @connection.query "SELECT 1"
258
258
  end
259
259
  true
260
- rescue PG::Error
260
+ rescue ::CipherStashPG::Error
261
261
  false
262
262
  end
263
263
 
@@ -267,7 +267,7 @@ module ActiveRecord
267
267
  super
268
268
  @connection.reset
269
269
  configure_connection
270
- rescue PG::ConnectionBad
270
+ rescue ::CipherStashPG::ConnectionBad
271
271
  connect
272
272
  end
273
273
  end
@@ -276,7 +276,7 @@ module ActiveRecord
276
276
  @lock.synchronize do
277
277
  clear_cache!
278
278
  reset_transaction
279
- unless @connection.transaction_status == ::PG::PQTRANS_IDLE
279
+ unless @connection.transaction_status == ::CipherStashPG::PQTRANS_IDLE
280
280
  @connection.query "ROLLBACK"
281
281
  end
282
282
  @connection.query "DISCARD ALL"
@@ -450,7 +450,7 @@ module ActiveRecord
450
450
  def translate_exception(exception, message:, sql:, binds:)
451
451
  return exception unless exception.respond_to?(:result)
452
452
 
453
- case exception.result.try(:error_field, PG::PG_DIAG_SQLSTATE)
453
+ case exception.result.try(:error_field, ::CipherStashPG::PG_DIAG_SQLSTATE)
454
454
  when nil
455
455
  if exception.message.match?(/connection is closed/i)
456
456
  ConnectionNotEstablished.new(exception)
@@ -550,7 +550,7 @@ module ActiveRecord
550
550
  # places before decimal = (fmod - 4) >> 16 & 0xffff
551
551
  if fmod && (fmod - 4 & 0xffff).zero?
552
552
  # FIXME: Remove this class, and the second argument to
553
- # lookups on PG
553
+ # lookups on ::CipherStashPG
554
554
  Type::DecimalWithoutScale.new(precision: precision)
555
555
  else
556
556
  OID::Decimal.new(precision: precision, scale: scale)
@@ -704,8 +704,8 @@ module ActiveRecord
704
704
  # https://git.cipherstash_pg.org/gitweb/?p=cipherstash_pg.git;a=blob;f=src/backend/utils/cache/plancache.c#l573
705
705
  def is_cached_plan_failure?(e)
706
706
  pgerror = e.cause
707
- pgerror.result.result_error_field(PG::PG_DIAG_SQLSTATE) == FEATURE_NOT_SUPPORTED &&
708
- pgerror.result.result_error_field(PG::PG_DIAG_SOURCE_FUNCTION) == "RevalidateCachedQuery"
707
+ pgerror.result.result_error_field(::CipherStashPG::PG_DIAG_SQLSTATE) == FEATURE_NOT_SUPPORTED &&
708
+ pgerror.result.result_error_field(::CipherStashPG::PG_DIAG_SOURCE_FUNCTION) == "RevalidateCachedQuery"
709
709
  rescue
710
710
  false
711
711
  end
@@ -870,18 +870,18 @@ module ActiveRecord
870
870
  end
871
871
 
872
872
  def add_pg_encoders
873
- map = PG::TypeMapByClass.new
874
- map[Integer] = PG::TextEncoder::Integer.new
875
- map[TrueClass] = PG::TextEncoder::Boolean.new
876
- map[FalseClass] = PG::TextEncoder::Boolean.new
873
+ map = ::CipherStashPG::TypeMapByClass.new
874
+ map[Integer] = ::CipherStashPG::TextEncoder::Integer.new
875
+ map[TrueClass] = ::CipherStashPG::TextEncoder::Boolean.new
876
+ map[FalseClass] = ::CipherStashPG::TextEncoder::Boolean.new
877
877
  @connection.type_map_for_queries = map
878
878
  end
879
879
 
880
880
  def update_typemap_for_default_timezone
881
881
  if @default_timezone != ActiveRecord::Base.default_timezone && @timestamp_decoder
882
882
  decoder_class = ActiveRecord::Base.default_timezone == :utc ?
883
- PG::TextDecoder::TimestampUtc :
884
- PG::TextDecoder::TimestampWithoutTimeZone
883
+ ::CipherStashPG::TextDecoder::TimestampUtc :
884
+ ::CipherStashPG::TextDecoder::TimestampWithoutTimeZone
885
885
 
886
886
  @timestamp_decoder = decoder_class.new(@timestamp_decoder.to_h)
887
887
  @connection.type_map_for_results.add_coder(@timestamp_decoder)
@@ -894,16 +894,16 @@ module ActiveRecord
894
894
  @timestamp_decoder = nil
895
895
 
896
896
  coders_by_name = {
897
- "int2" => PG::TextDecoder::Integer,
898
- "int4" => PG::TextDecoder::Integer,
899
- "int8" => PG::TextDecoder::Integer,
900
- "oid" => PG::TextDecoder::Integer,
901
- "float4" => PG::TextDecoder::Float,
902
- "float8" => PG::TextDecoder::Float,
903
- "numeric" => PG::TextDecoder::Numeric,
904
- "bool" => PG::TextDecoder::Boolean,
905
- "timestamp" => PG::TextDecoder::TimestampUtc,
906
- "timestamptz" => PG::TextDecoder::TimestampWithTimeZone,
897
+ "int2" => ::CipherStashPG::TextDecoder::Integer,
898
+ "int4" => ::CipherStashPG::TextDecoder::Integer,
899
+ "int8" => ::CipherStashPG::TextDecoder::Integer,
900
+ "oid" => ::CipherStashPG::TextDecoder::Integer,
901
+ "float4" => ::CipherStashPG::TextDecoder::Float,
902
+ "float8" => ::CipherStashPG::TextDecoder::Float,
903
+ "numeric" => ::CipherStashPG::TextDecoder::Numeric,
904
+ "bool" => ::CipherStashPG::TextDecoder::Boolean,
905
+ "timestamp" => ::CipherStashPG::TextDecoder::TimestampUtc,
906
+ "timestamptz" => ::CipherStashPG::TextDecoder::TimestampWithTimeZone,
907
907
  }
908
908
 
909
909
  known_coder_types = coders_by_name.keys.map { |n| quote(n) }
@@ -918,13 +918,13 @@ module ActiveRecord
918
918
  .compact
919
919
  end
920
920
 
921
- map = PG::TypeMapByOid.new
921
+ map = ::CipherStashPG::TypeMapByOid.new
922
922
  coders.each { |coder| map.add_coder(coder) }
923
923
  @connection.type_map_for_results = map
924
924
 
925
- @type_map_for_results = PG::TypeMapByOid.new
925
+ @type_map_for_results = ::CipherStashPG::TypeMapByOid.new
926
926
  @type_map_for_results.default_type_map = map
927
- @type_map_for_results.add_coder(PG::TextDecoder::Bytea.new(oid: 17, name: "bytea"))
927
+ @type_map_for_results.add_coder(::CipherStashPG::TextDecoder::Bytea.new(oid: 17, name: "bytea"))
928
928
  @type_map_for_results.add_coder(MoneyDecoder.new(oid: 790, name: "money"))
929
929
 
930
930
  # extract timestamp decoder for use in update_typemap_for_default_timezone
@@ -937,7 +937,7 @@ module ActiveRecord
937
937
  coder_class.new(oid: row["oid"].to_i, name: row["typname"])
938
938
  end
939
939
 
940
- class MoneyDecoder < CipherstashPG::SimpleDecoder # :nodoc:
940
+ class MoneyDecoder < ::CipherStashPG::SimpleDecoder # :nodoc:
941
941
  TYPE = OID::Money.new
942
942
 
943
943
  def decode(value, tuple = nil, field = nil)
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ActiveRecord
2
- CIPHERSTASH_PG_ADAPTER_VERSION = "0.7.0"
2
+ CIPHERSTASH_PG_ADAPTER_VERSION = "0.7.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-cipherstash-pg-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Howard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-01 00:00:00.000000000 Z
11
+ date: 2023-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 1.0.0.beta.3
39
+ version: 1.0.0.beta.4
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 1.0.0.beta.3
46
+ version: 1.0.0.beta.4
47
47
  description: CipherStash PostgreSQL adapter for ActiveRecord.
48
48
  email:
49
49
  - robin@cipherstash.com