arel_extensions 2.0.21 → 2.0.22

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: 54f73270d3e91a6ae05a01bc021bbc567fed8d79dce914248699c1cd75d6947a
4
- data.tar.gz: 12eb538dc3fe8e2d830809877ddead22def4ac70b1cec16e7ffd20a439cd5ebe
3
+ metadata.gz: 57188b98a348ea5dd72994ef0edb94cb386104cbd50d863b3cc465bb81499f8f
4
+ data.tar.gz: 7235c655967c8058e24f85f96b1a3ea93803dc759906ea24aff360edf28ee6fb
5
5
  SHA512:
6
- metadata.gz: 5ba5704db9140c93c980b7e0e1afe54525d414a81408f509851710999f3b29738f638f3f311f5a346ddae37180eb83b34fbe9162c55ac9c3b6feae6baef32d64
7
- data.tar.gz: f94154812f7e4c84248dce19a875be29a4ff3d692cc4a73e83583ee906bb39388ec63791ecc66896e66bc8781b2c5e8d2221b299044970e1599230b53e2a01fb
6
+ metadata.gz: c60be09bdf31efe2b4a953c0b097bbc461d01a4d7005c1dc190af20efb12e659d2331e16d8ca47527b9757b89a2528069fa1a8a94cfd52bc80000633995b229f
7
+ data.tar.gz: b028042975ab07e0d28e919278c36f2652fae79dbced3776e16519f4fdfaaf45de32a0a375cb7e77d5157775d2a3ef8555f9096299b2c71f366367e6452a93a6
@@ -158,6 +158,9 @@ class Arel::Nodes::Unary
158
158
  include ArelExtensions::MathFunctions
159
159
  include ArelExtensions::Comparators
160
160
  include ArelExtensions::Predications
161
+ def eql? other
162
+ hash == other.hash
163
+ end
161
164
  end
162
165
 
163
166
  class Arel::Nodes::Binary
@@ -167,6 +170,9 @@ class Arel::Nodes::Binary
167
170
  include ArelExtensions::Comparators
168
171
  include ArelExtensions::BooleanFunctions
169
172
  include ArelExtensions::Predications
173
+ def eql? other
174
+ hash == other.hash
175
+ end
170
176
  end
171
177
 
172
178
  class Arel::Nodes::Equality
@@ -2,6 +2,12 @@ module ArelExtensions
2
2
  module Nodes
3
3
  class Length < Function
4
4
  RETURN_TYPE = :integer
5
+ attr_accessor :bytewise
6
+
7
+ def initialize(node, bytewise = true)
8
+ @bytewise = bytewise
9
+ super([node])
10
+ end
5
11
  end
6
12
  end
7
13
  end
@@ -24,9 +24,17 @@ module ArelExtensions
24
24
  ArelExtensions::Nodes::FindInSet.new [other, self]
25
25
  end
26
26
 
27
- # LENGTH function returns the length of the value in a text field.
27
+ # LENGTH function returns the length (bytewise) of the value in a text field.
28
28
  def length
29
- ArelExtensions::Nodes::Length.new [self]
29
+ ArelExtensions::Nodes::Length.new self, true
30
+ end
31
+
32
+ def byte_length
33
+ ArelExtensions::Nodes::Length.new self, true
34
+ end
35
+
36
+ def char_length
37
+ ArelExtensions::Nodes::Length.new self, false
30
38
  end
31
39
 
32
40
  # LOCATE function returns the first starting position of a string in another string.
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.0.21".freeze
2
+ VERSION = "2.0.22".freeze
3
3
  end
@@ -155,7 +155,7 @@ module ArelExtensions
155
155
  end
156
156
 
157
157
  def visit_ArelExtensions_Nodes_Length o, collector
158
- collector << "LEN("
158
+ collector << "#{o.bytewise ? 'DATALENGTH' : 'LEN'}("
159
159
  collector = visit o.expr, collector
160
160
  collector << ")"
161
161
  collector
@@ -308,7 +308,7 @@ module ArelExtensions
308
308
  end
309
309
 
310
310
  def visit_ArelExtensions_Nodes_Length o, collector
311
- collector << "LENGTH("
311
+ collector << "LENGTH#{o.bytewise ? 'B' : ''}("
312
312
  collector = visit o.expr, collector
313
313
  collector << ")"
314
314
  collector
@@ -117,7 +117,7 @@ module ArelExtensions
117
117
  end
118
118
 
119
119
  def visit_ArelExtensions_Nodes_Length o, collector
120
- collector << "LENGTH("
120
+ collector << "#{o.bytewise ? '' : 'CHAR_'}LENGTH("
121
121
  collector = visit o.left, collector
122
122
  collector << ")"
123
123
  collector
data/version_v1.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "1.2.24".freeze
2
+ VERSION = "1.2.25".freeze
3
3
  end
data/version_v2.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.0.21".freeze
2
+ VERSION = "2.0.22".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.21
4
+ version: 2.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-03-25 00:00:00.000000000 Z
13
+ date: 2021-04-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord