riverqueue-sequel 0.12.0 → 0.13.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/driver.rb +16 -4
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8672d5a5d5c01059a17a307704e5512496aecc5e62f57afe2dfcd5ddd8569a34
4
- data.tar.gz: abca68b736d841506449226a45e7b3d049884b40accdfb2c0e5fecf8cbbf896a
3
+ metadata.gz: bb0d975eb6921905735667d53aeba24da81b090f92af870935bd112cbc9a7b5e
4
+ data.tar.gz: 9f4b514ebc0ac579caeb7eacec5227a9e9e2b497cbfbd9d15366a3795e271ee9
5
5
  SHA512:
6
- metadata.gz: 8af058f89ffef579beb2cc91f428a4e004a7d844c61fd2ae588c8214e6fd54e7dc3b22acf7a01feca0dd2474945c5a6ec408378b42918e4f7bd29359c861c8fe
7
- data.tar.gz: 1d16f622b3df74b166ffccabee0c2374d810b43d026d344529df4f7d9eb2fd66a7f0bc2448a4e12619d00632c99e119a312f487635074dc14f35c47a44fbffd3
6
+ metadata.gz: 9dc23c4d8a76b28a7d39e3422b011db46d648c3e5c7adfd652e6fa391643a003617362f5edc1e17e71722c1aa5f52d0db35fc95315242c28ab9d4f534c557620
7
+ data.tar.gz: 8fdce85797d7deefb7b82223ac81531bc61962b32a43b96bd29452a8f88e8352dedd2fac1da555e5e194991f281f9c3d5d4468bed82a2c6410404218b63adaf1
data/lib/driver.rb CHANGED
@@ -81,8 +81,20 @@ module River::Driver
81
81
 
82
82
  # Runs the block in a Sequel transaction or savepoint and returns the
83
83
  # block's result.
84
- def transaction(&)
85
- @db.transaction(savepoint: true, &)
84
+ def transaction
85
+ block_error = nil
86
+ @db.transaction(savepoint: true) do
87
+ yield
88
+ rescue ArgumentError => error
89
+ block_error = error
90
+ raise
91
+ end
92
+ rescue ::Sequel::DatabaseError => error
93
+ # SQLite treats ArgumentError as an adapter error, even when it came
94
+ # from an application callback. Preserve that error after rollback.
95
+ raise block_error if block_error && error.wrapped_exception.equal?(block_error)
96
+
97
+ raise
86
98
  end
87
99
 
88
100
  SQLITE_CONFLICT_WHERE = <<~SQL.chomp.freeze
@@ -163,7 +175,7 @@ module River::Driver
163
175
  "unique_key IS NOT NULL AND unique_states IS NOT NULL AND river_job_state_in_bitmask(unique_states, state)"
164
176
  ),
165
177
  target: [:unique_key],
166
- update: {kind: ::Sequel[:excluded][:kind]}
178
+ update: {kind: ::Sequel[:river_job][:kind]}
167
179
  )
168
180
  .returning(::Sequel.lit("*, #{capabilities.unique_insert_sql} AS unique_skipped_as_duplicate"))
169
181
  .multi_insert(insert_params_array.map { |p| postgres_insert_params_to_hash(p, nonce) })
@@ -276,7 +288,7 @@ module River::Driver
276
288
  FROM json_each(cast(? AS blob))
277
289
  WHERE true
278
290
  ON CONFLICT (unique_key) WHERE #{SQLITE_CONFLICT_WHERE}
279
- DO UPDATE SET kind = EXCLUDED.kind
291
+ DO UPDATE SET kind = river_job.kind
280
292
  RETURNING #{SQLITE_JOB_COLUMNS}
281
293
  SQL
282
294
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riverqueue-sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Gentry
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 0.12.0
39
+ version: 0.13.0
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: 0.12.0
46
+ version: 0.13.0
47
47
  description: Sequel PostgreSQL and SQLite driver for inserting and working River jobs
48
48
  in Ruby.
49
49
  email: brandur@brandur.org