arel_extensions 2.0.21 → 2.0.22

Sign up to get free protection for your applications and to get access to all the features.
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