arel_extensions 0.9.7 → 0.9.7.1

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
  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