switchman 3.0.2 → 3.0.4

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: 1224320ec4f3ff0d8f05d1c5537ce06f33932e4c9da069d82183aa7562e1cab4
4
- data.tar.gz: 1cd6f52c82fbdea9c3aac4c569b291428d2476abc4a2198c09beb1da64700473
3
+ metadata.gz: 1ffc8c73f2ac38cf0440d1e556e1c7c2af4ad8d665e40893caf76ae228bc702f
4
+ data.tar.gz: a4567920bb1cff999d77845d0de9f204826cce7ef9da1c2164802230923b56af
5
5
  SHA512:
6
- metadata.gz: 052e1675cb5d6b07844dab24c802c6f98b8e75fe4c0146a407e275d89633b5c3058801538a2537f82a7798260ad9d5dd2989536ad88d06a37bb33cf9082444dd
7
- data.tar.gz: ebaa91ea8f6be5f878ac2f8b57a7954853603cb20770f083263fd369774cedc4b33c8127a8b17746bbf4e5b91e1e742df2970be8dab08aa708baae3bc130b988
6
+ metadata.gz: 75493a10996762aacbaeb5d0ec0a8299565758eb5d1e2d8697353f02c90113b865d31253615864ea5778804830fb6abc17f50c0e5650862e6cc77319f6bc57b7
7
+ data.tar.gz: ea96557baaeed4cf99d9144cabfcadf70e6ac00024bffb16fdcc299da7298c5ec073fb9d91bdfcfbf6cd25bbd71f178bb973c7340720ba429521d94f0d4a769e
@@ -87,6 +87,10 @@ module Switchman
87
87
  name.quoted
88
88
  end
89
89
 
90
+ def with_global_table_name(&block)
91
+ with_local_table_name(false, &block)
92
+ end
93
+
90
94
  def with_local_table_name(enable = true) # rubocop:disable Style/OptionalBooleanParameter
91
95
  old_value = @use_local_table_name
92
96
  @use_local_table_name = enable
@@ -239,6 +239,10 @@ module Switchman
239
239
  connection.with_local_table_name { super }
240
240
  end
241
241
 
242
+ def table_name_matches?(from)
243
+ connection.with_global_table_name { super }
244
+ end
245
+
242
246
  def transpose_predicates(predicates,
243
247
  source_shard,
244
248
  target_shard,
@@ -63,7 +63,7 @@ module Switchman
63
63
  %I[update_all delete_all].each do |method|
64
64
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
65
65
  def #{method}(*args)
66
- result = self.activate { |relation| relation.call_super(#{method.inspect}, Relation, *args) }
66
+ result = self.activate(unordered: true) { |relation| relation.call_super(#{method.inspect}, Relation, *args) }
67
67
  result = result.sum if result.is_a?(Array)
68
68
  result
69
69
  end
@@ -103,7 +103,7 @@ module Switchman
103
103
  end
104
104
  end
105
105
 
106
- def activate(&block)
106
+ def activate(unordered: false, &block)
107
107
  shards = all_shards
108
108
  if Array === shards && shards.length == 1
109
109
  if shards.first == DefaultShard || shards.first == Shard.current(klass.connection_classes)
@@ -124,7 +124,7 @@ module Switchman
124
124
 
125
125
  shard_results = relation.activate(&block)
126
126
 
127
- if shard_results.present?
127
+ if shard_results.present? && !unordered
128
128
  can_order ||= can_order_cross_shard_results? unless order_values.empty?
129
129
  raise OrderOnMultiShardQuery if !can_order && !order_values.empty? && result_count.positive?
130
130
 
@@ -148,8 +148,12 @@ module Switchman
148
148
  results.sort! do |l, r|
149
149
  result = 0
150
150
  order_values.each do |ov|
151
- a = l.attribute(ov.expr.name)
152
- b = r.attribute(ov.expr.name)
151
+ if l.is_a?(::ActiveRecord::Base)
152
+ a = l.attribute(ov.expr.name)
153
+ b = r.attribute(ov.expr.name)
154
+ else
155
+ a, b = l, r
156
+ end
153
157
  next if a == b
154
158
 
155
159
  if a.nil? || b.nil?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Switchman
4
- VERSION = '3.0.2'
4
+ VERSION = '3.0.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: switchman
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-06-09 00:00:00.000000000 Z
13
+ date: 2021-06-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord