arel_extensions 0.9.7.1 → 0.9.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/arel_extensions/version.rb +1 -1
- data/lib/arel_extensions/visitors/oracle.rb +12 -12
- data/test/visitors/test_oracle.rb +1 -1
- data/test/with_ar/all_agnostic_test.rb +6 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1923df0add8a1b52266d494eeb0eaf76e422b7f5
|
4
|
+
data.tar.gz: 5be82144d6f2c8c1862bb4cec335d37a2cfd109e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 738eb1d6e164f64625b06f91be03b8852be0f5e4c359ccab87b13342af03f4d79ce69371950ab6c52410394411aa22cb5e14a25d6a610de36eb5e28df92ac453
|
7
|
+
data.tar.gz: db4742a4ac307fc3e208deba698bfa9032e9b51d5eaa13b32f69860250211ed44f588f127a96d1ec431d03c8cfe94e190e2b4df10cf15aad952b842520fbd735
|
@@ -79,28 +79,28 @@ 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
|
-
|
83
|
-
|
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
|
-
|
85
|
+
collector << 'TO_DATE(' if lc
|
86
86
|
collector = visit o.left, collector
|
87
|
-
|
87
|
+
collector << ')' if lc
|
88
88
|
collector << " - "
|
89
|
-
|
89
|
+
collector << 'TO_DATE(' if rc
|
90
90
|
collector = visit o.right, collector
|
91
|
-
|
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
|
-
collector << ' * CASE WHEN (TRUNC('
|
95
|
-
|
94
|
+
collector << ' * (CASE WHEN (TRUNC('
|
95
|
+
collector << 'TO_DATE(' if lc
|
96
96
|
collector = visit o.left, collector
|
97
|
-
|
97
|
+
collector << ')' if lc
|
98
98
|
collector << Arel::Visitors::Oracle::COMMA
|
99
99
|
collector << "'DDD') = "
|
100
|
-
|
100
|
+
collector << 'TO_DATE(' if lc
|
101
101
|
collector = visit o.left, collector
|
102
|
-
|
103
|
-
collector << ') THEN 1 ELSE 86400 END' # converts to seconds
|
102
|
+
collector << ')' if lc
|
103
|
+
collector << ') THEN 1 ELSE 86400 END)' # converts to seconds
|
104
104
|
end
|
105
105
|
collector
|
106
106
|
end
|
@@ -70,7 +70,7 @@ module ArelExtensions
|
|
70
70
|
it "should diff date col and datetime col with AS" do
|
71
71
|
sql = compile((@table[:updated_at] - @table[:created_at]).as('new_name'))
|
72
72
|
# sql.must_be_like %{(TO_DATE("users"."updated_at") - "users"."created_at") * 86400 AS new_name}
|
73
|
-
sql.must_be_like %{("users"."updated_at" - "users"."created_at") * CASE WHEN (TRUNC("users"."updated_at", 'DDD') = "users"."updated_at") THEN 1 ELSE 86400 END AS new_name}
|
73
|
+
sql.must_be_like %{("users"."updated_at" - "users"."created_at") * (CASE WHEN (TRUNC("users"."updated_at", 'DDD') = "users"."updated_at") THEN 1 ELSE 86400 END) AS new_name}
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should diff between time values" do
|
@@ -302,7 +302,11 @@ 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
|
-
|
305
|
+
if @env_db == 'oracle'
|
306
|
+
assert_nil t(@laure, @comments.coalesce(""))
|
307
|
+
else
|
308
|
+
assert_equal('', t(@laure, @comments.coalesce("")))
|
309
|
+
end
|
306
310
|
|
307
311
|
if @env_db == 'postgresql'
|
308
312
|
assert_equal 100, t(@test, @age.coalesce(100))
|
@@ -364,7 +368,7 @@ module ArelExtensions
|
|
364
368
|
assert_equal 42, t(@lucas, @updated_at - Time.utc(2014, 3, 3, 12, 41, 18)).to_i
|
365
369
|
assert_equal(-3600, t(@lucas, @updated_at - Time.utc(2014, 3, 3, 13, 42)).to_i)
|
366
370
|
|
367
|
-
|
371
|
+
assert_includes [nil, 0, 'f'], t(@lucas, (@updated_at - Time.utc(2014, 3, 3, 12, 41, 18)) < -1)
|
368
372
|
end
|
369
373
|
end
|
370
374
|
|