ar-ondemand 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDYxMjI1MWU0YTFkNmI1YzBkYTY1NWI2OTY0OWM4YThiMmZjODhkMw==
4
+ NzFmMGZjYTQyODc2ZDY5ZGFiNzUxYTYyYTVlYzc4ZGZhNGFiMjIwZg==
5
5
  data.tar.gz: !binary |-
6
- M2JkMTFjZmExNWVhZDUyNzc0ODRhNDM5N2VlYjJlMGM2YmJkNzUwZg==
6
+ MDc4YWY1NjE1YzdhMjM0Njg4NjEyNjgzN2VhNzg5ODdiN2JlZDIxYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OGJmYTJlZGI1N2UzOTUyYTUzMWNmOGJjYmZkYTMxYTUzNWYwMzM0NzFiNDUw
10
- ODBhNzM5ODZmNWNhNWFkNzNiNTc5NzQyNTU3OTk2MmU3NTMyZTkwYzQzNWE1
11
- NGRjNzg5Mzc3YTE1NjUwMmE4MWM5MzYzZWNkNjU5OTA0ZjcwYjc=
9
+ NDFhMTAxMWY5OTc5OTEwODRiMzY2MjI1MTg2Y2FhOWZjODRhMTJiOGU0ZjRi
10
+ MTgzOGM4OTQzOTBkNjM4ZTM3ZDdlZDk2NWYwYjA0NTY0ZjMzNDE0NjY5MzA4
11
+ NDJlNDAwOTU2YjA5OWEyNTc3MWU1MGZkYjljNjk4YmRmZDBiMGM=
12
12
  data.tar.gz: !binary |-
13
- NzY5NjMwZTA2NDU3ODZhZTY4ODg4MzkxYmJmMzlhZjc0ZTIxYWExYjlhYmFj
14
- YzkyZTlmMTJkMDJjMTdlMjE1MTY0NTgwMmQ1OTc4MGNhMDA5YzgzZGM2MjFi
15
- MDhmNTE5NDkxZTI5Yzc0MTM5NTJjZGRkOThkOWNjNGNlYTdmM2E=
13
+ NzM3YWMyMDM5ZjdiM2Q1ZjhjZjMwMDk2MmJmY2I0ZTkzNTZkZjcxODYzOGFk
14
+ MjAzZDk2MjFlZWQyMWFkNTc0ZmY2NmM2ZWIzOTI3ZjY3YzJjZTU4ZjQwOWYz
15
+ ZmI3YTA2OTcyODI1ZmEzZjgyNTM0NjlhMzE2ZDgxMzI4NjY1NGE=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ar-ondemand (1.0.1)
4
+ ar-ondemand (1.0.5)
5
5
  activerecord (>= 3.2)
6
6
  activesupport (>= 3.2)
7
7
 
@@ -5,7 +5,8 @@ module ActiveRecord
5
5
  module DeleteAllByPkExtension
6
6
  extend ::ActiveSupport::Concern
7
7
 
8
- # Ripped from the find_in_batches function, but customized to return an ::ActiveRecord::OnDemand::ResultSet
8
+ # Use this instead of delete_all to perform a delete using the PK of the table, which prevents a complete table scan that locks it
9
+ # Based on find_in_batches function
9
10
  def delete_all_by_pk(options = {})
10
11
  relation = self
11
12
 
@@ -25,17 +26,20 @@ module ActiveRecord
25
26
 
26
27
  relation = relation.reorder(batch_order_delete_all_by_pk).limit(batch_size) if batch_size
27
28
  records = query_delete_all_by_pk(start ? relation.where(table[primary_key].gteq(start)) : relation)
29
+ deleted = 0
28
30
 
29
31
  while records.any?
30
32
  records_size = records.size
31
33
  primary_key_offset = records.last
32
34
 
33
- self.unscoped.where(id: records).delete_all
35
+ deleted += self.unscoped.where(id: records).delete_all
34
36
 
35
37
  break if batch_size.nil? || records_size < batch_size
36
38
 
37
39
  records = query_delete_all_by_pk relation.where(table[primary_key].gt(primary_key_offset))
38
40
  end
41
+
42
+ deleted
39
43
  end
40
44
 
41
45
  private
@@ -1,3 +1,3 @@
1
1
  module ArOnDemand
2
- VERSION = '1.0.4'
2
+ VERSION = '1.0.5'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar-ondemand
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Frank