arel_extensions 0.9.7 → 0.9.7.1

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
  SHA1:
3
- metadata.gz: e6b6035bcab431e9db110bac526dba5d7ae50cf9
4
- data.tar.gz: afb3bd312dbcd6ecc15ba1658b4ad2229f47e8d7
3
+ metadata.gz: 9be145c31813735ab972e8b497c6ceab5e06e291
4
+ data.tar.gz: 7c62d208758ff4ae6c0519736db22e67163b1084
5
5
  SHA512:
6
- metadata.gz: f98fda0e062afc38ab6b9b10d9f72c857b348551095f396e0821b953296c9097067593ccdc50b764f35e5fb30e8994ef5c445491e7a0fc94a16ca19ed251da9f
7
- data.tar.gz: e616f743571bde26c649646067dc3d25f8a60abdf8c479c204761ea2851824536534ba5d31d519ff3bc3b8b3fd04dc6056e696688fc732dfe2003282bb908742
6
+ metadata.gz: 39ba0787983047a55a20012256533f4f22752e54e44e2f0504a86e26f912fa29662742b1d75588e6b35b051567754a74bc129b53c11ff1869146606480b64a43
7
+ data.tar.gz: 2b8ea0881447aa61d5bdad1b2c8e111059804abe4b6613adef9372f00d7d22ef6bcada95da7f2615be8a174c298ff3e1fca8345f7bb9dda28948ec58f1d934ca
data/SQL_Challenges.md CHANGED
@@ -7,7 +7,7 @@ A good way could be to create user defined functions to ensure a total transpare
7
7
 
8
8
  ## SQLite (without extension)
9
9
  - FIND_IN_SET
10
- - LOCATE / instr
10
+ - LOCATE / instr (before 3.7.x)
11
11
  - REGEXP
12
12
  - SOUNDEX
13
13
 
data/TODO CHANGED
@@ -20,7 +20,6 @@ New features:
20
20
  - POSIX format numbers (%.2f)
21
21
  - easy unions
22
22
  - cast, to_char
23
- - rake tasks to load sql functions
24
23
 
25
24
  Tests improvements:
26
25
  - SQL Server
data/functions.html CHANGED
@@ -198,12 +198,30 @@
198
198
  <tr>
199
199
  <td class="tg-yw4l">TRIM (both)<br>column.trim("BOTH","e")</td>
200
200
  <td class="ok">✔</td>
201
- <td class="tg-j6lv">TRIM()<br></td>
201
+ <td class="tg-j6lv">TRIM()</td>
202
202
  <td class="tg-j6lv">TRIM()</td>
203
203
  <td class="ok">✔</td>
204
204
  <td class="tg-j6lv">LTRIM(RTRIM())</td>
205
205
  <td class="tg-j6lv">TRIM()</td>
206
206
  </tr>
207
+ <tr>
208
+ <td class="tg-yw4l">LOWER<br>column.downcase</td>
209
+ <td class="ok">✔</td>
210
+ <td class="ok">✔</td>
211
+ <td class="ok">✔</td>
212
+ <td class="ok">✔</td>
213
+ <td class="ok">✔</td>
214
+ <td class="ok">✔</td>
215
+ </tr>
216
+ <tr>
217
+ <td class="tg-yw4l">UPPER<br>column.upcase</td>
218
+ <td class="ok">✔</td>
219
+ <td class="ok">✔</td>
220
+ <td class="ok">✔</td>
221
+ <td class="ok">✔</td>
222
+ <td class="ok">✔</td>
223
+ <td class="ok">✔</td>
224
+ </tr>
207
225
  <tr>
208
226
  <th class="tg-4rp9" rowspan="6"><div>Date functions</div></th>
209
227
  <td class="tg-yw4l">DATEADD<br>column + 2.year<br></td>
@@ -1,3 +1,4 @@
1
+ require 'arel_extensions/nodes/function'
1
2
  require 'arel_extensions/nodes/duration'
2
3
  require 'arel_extensions/nodes/wday'
3
4
 
@@ -1,6 +1,7 @@
1
1
  module ArelExtensions
2
2
  module Nodes
3
- class Duration < Arel::Nodes::Function
3
+ class Duration < Function
4
+ @@return_type = :number
4
5
 
5
6
  def initialize left, right, aliaz = nil
6
7
  tab = Array.new
@@ -1,6 +1,7 @@
1
1
  module ArelExtensions
2
2
  module Nodes
3
3
  class IsNull < Function
4
+ @@return_type = :boolean
4
5
  end
5
6
  end
6
7
  end
@@ -1,7 +1,6 @@
1
1
  module ArelExtensions
2
2
  module Nodes
3
3
  class Rand < Function
4
-
5
4
  @@return_type = :number
6
5
 
7
6
  def initialize(seed = nil)
@@ -1,6 +1,7 @@
1
1
  module ArelExtensions
2
2
  module Nodes
3
3
  class Round < Function
4
+ @@return_type = :number
4
5
 
5
6
  def initialize expr
6
7
  if expr && expr.length == 1
@@ -1,6 +1,6 @@
1
1
  module ArelExtensions
2
2
  module Nodes
3
- class Wday < Arel::Nodes::Function
3
+ class Wday < Function
4
4
 
5
5
 
6
6
  def initialize other, aliaz = nil
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module ArelExtensions
3
- VERSION = "0.9.7".freeze
3
+ VERSION = "0.9.7.1".freeze
4
4
  end
@@ -79,27 +79,27 @@ module ArelExtensions
79
79
 
80
80
  # :date is not possible in Oracle since this type does not really exist
81
81
  def visit_ArelExtensions_Nodes_DateDiff o, collector
82
- lc = o.left_node_type == :ruby_date || o.left_node_type == :ruby_time
83
- rc = o.right_node_type == :ruby_date || o.right_node_type == :ruby_time
82
+ # lc = o.left_node_type == :ruby_date || o.left_node_type == :ruby_time
83
+ # rc = o.right_node_type == :ruby_date || o.right_node_type == :ruby_time
84
84
  collector << '('
85
- collector << 'TO_DATE(' if lc
85
+ # collector << 'TO_DATE(' if lc
86
86
  collector = visit o.left, collector
87
- collector << ')' if lc
87
+ # collector << ')' if lc
88
88
  collector << " - "
89
- collector << 'TO_DATE(' if rc
89
+ # collector << 'TO_DATE(' if rc
90
90
  collector = visit o.right, collector
91
- collector << ')' if rc
91
+ # collector << ')' if rc
92
92
  collector << ')'
93
93
  if o.left_node_type == :ruby_time || o.left_node_type == :datetime || o.left_node_type == :time
94
94
  collector << ' * CASE WHEN (TRUNC('
95
- collector << 'TO_DATE(' if lc
95
+ # collector << 'TO_DATE(' if lc
96
96
  collector = visit o.left, collector
97
- collector << ')' if lc
97
+ # collector << ')' if lc
98
98
  collector << Arel::Visitors::Oracle::COMMA
99
99
  collector << "'DDD') = "
100
- collector << 'TO_DATE(' if lc
100
+ # collector << 'TO_DATE(' if lc
101
101
  collector = visit o.left, collector
102
- collector << ')' if lc
102
+ # collector << ')' if lc
103
103
  collector << ') THEN 1 ELSE 86400 END' # converts to seconds
104
104
  end
105
105
  collector
@@ -123,8 +123,8 @@ module ArelExtensions
123
123
  def test_ceil
124
124
  # skip "Sqlite version can't load extension for ceil" if $sqlite && $load_extension_disabled
125
125
  assert_equal 2, t(@test, @score.ceil) # 1.62
126
- assert_equal (-20), t(@camille, @score.ceil) # -20.16
127
- assert_equal (-20), t(@camille, (@score - 0.5).ceil) # -20.16
126
+ assert_equal(-20, t(@camille, @score.ceil)) # -20.16
127
+ assert_equal(-20, t(@camille, (@score - 0.5).ceil)) # -20.16
128
128
  assert_equal 63, t(@arthur, @age.ceil + 42)
129
129
  end
130
130
 
@@ -132,7 +132,7 @@ module ArelExtensions
132
132
  # skip "Sqlite version can't load extension for floor" if $sqlite && $load_extension_disabled
133
133
  assert_equal 0, t(@neg, @score.floor)
134
134
  assert_equal 1, t(@test, @score.floor) # 1.62
135
- assert_equal (-9), t(@test, (@score - 10).floor) # 1.62
135
+ assert_equal(-9, t(@test, (@score - 10).floor)) # 1.62
136
136
  assert_equal 42, t(@arthur, @score.floor - 23)
137
137
  end
138
138
 
@@ -192,12 +192,12 @@ module ArelExtensions
192
192
 
193
193
  def test_substring
194
194
  assert_equal 'C', t(@camille, @name.substring(1, 1))
195
- assert_equal (@env_db == 'oracle' ? nil : ''), t(@lucas, @name.substring(42))
195
+ assert_equal(@env_db == 'oracle' ? nil : '', t(@lucas, @name.substring(42)))
196
196
  assert_equal 'Lu', t(@lucas, @name.substring(1,2))
197
197
 
198
198
  assert_equal 'C', t(@camille, @name[0, 1])
199
199
  assert_equal 'C', t(@camille, @name[0])
200
- assert_equal (@env_db == 'oracle' ? nil : ''), t(@lucas, @name[42])
200
+ assert_equal(@env_db == 'oracle' ? nil : '', t(@lucas, @name[42]))
201
201
  assert_equal 'Lu', t(@lucas, @name[0,2])
202
202
  assert_equal 'Lu', t(@lucas, @name[0..1])
203
203
  end
@@ -302,7 +302,7 @@ module ArelExtensions
302
302
 
303
303
  assert_equal ' ', t(@myung, @comments.coalesce("Myung").coalesce('ignored'))
304
304
  assert_equal 'Laure', t(@laure, @comments.coalesce("Laure"))
305
- assert_equal (@env_db == 'oracle' ? nil : ''), t(@laure, @comments.coalesce(""))
305
+ assert_equal(@env_db == 'oracle' ? nil : '', t(@laure, @comments.coalesce("")))
306
306
 
307
307
  if @env_db == 'postgresql'
308
308
  assert_equal 100, t(@test, @age.coalesce(100))
@@ -363,6 +363,8 @@ module ArelExtensions
363
363
  else
364
364
  assert_equal 42, t(@lucas, @updated_at - Time.utc(2014, 3, 3, 12, 41, 18)).to_i
365
365
  assert_equal(-3600, t(@lucas, @updated_at - Time.utc(2014, 3, 3, 13, 42)).to_i)
366
+
367
+ assert_equal 0, t(@lucas, (@updated_at - Time.utc(2014, 3, 3, 12, 41, 18)) < -1).to_i
366
368
  end
367
369
  end
368
370
 
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: 0.9.7
4
+ version: 0.9.7.1
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: 2017-03-19 00:00:00.000000000 Z
13
+ date: 2017-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: arel