arel 4.0.0.beta1 → 4.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -3
- data/Gemfile +1 -1
- data/arel.gemspec +3 -3
- data/lib/arel.rb +1 -1
- data/lib/arel/predications.rb +18 -2
- data/lib/arel/visitors/to_sql.rb +3 -3
- data/test/support/fake_record.rb +5 -1
- data/test/visitors/test_to_sql.rb +34 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4264ab4b4e747b29ec7a97c5d54f79f95ef15db
|
4
|
+
data.tar.gz: 9122058016114dc381291e8d66d62fcd1327bdb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24d225c695b37c2a1923ff2460ab13a0711fb2659f1440ca3ef898e6bd6cb7cd65ee6001af10d013b4c6d6e7cd41aa983ef48011df036f1db76e868fc2b04695
|
7
|
+
data.tar.gz: d836640d595a871b8bcb23410ae28412604f51c396ffc3da56017c38af2503bcac1ebe898807a77ab3377390eba48fafb4396856b2d22ed16377f26aa19f07c6
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/arel.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "arel"
|
5
|
-
s.version = "4.0.0.
|
5
|
+
s.version = "4.0.0.beta2.20130314230643"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Aaron Patterson", "Bryan Halmkamp", "Emilio Tagua", "Nick Kallen"]
|
9
|
-
s.date = "2013-
|
9
|
+
s.date = "2013-03-15"
|
10
10
|
s.description = "Arel is a SQL AST manager for Ruby. It\n\n1. Simplifies the generation of complex SQL queries\n2. Adapts to various RDBMS systems\n\nIt is intended to be a framework framework; that is, you can build your own ORM\nwith it, focusing on innovative object and collection modeling as opposed to\ndatabase compatibility and query generation."
|
11
11
|
s.email = ["aaron@tenderlovemaking.com", "bryan@brynary.com", "miloops@gmail.com", "nick@example.org"]
|
12
12
|
s.extra_rdoc_files = ["History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown"]
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rdoc_options = ["--main", "README.markdown"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = "arel"
|
18
|
-
s.rubygems_version = "2.0.
|
18
|
+
s.rubygems_version = "2.0.2"
|
19
19
|
s.summary = "Arel is a SQL AST manager for Ruby"
|
20
20
|
s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_and.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_distinct.rb", "test/nodes/test_equality.rb", "test/nodes/test_extract.rb", "test/nodes/test_false.rb", "test/nodes/test_grouping.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_over.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_table_alias.rb", "test/nodes/test_true.rb", "test/nodes/test_update_statement.rb", "test/nodes/test_window.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_bind_visitor.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
|
21
21
|
|
data/lib/arel.rb
CHANGED
data/lib/arel/predications.rb
CHANGED
@@ -29,7 +29,15 @@ module Arel
|
|
29
29
|
when Arel::SelectManager
|
30
30
|
Arel::Nodes::In.new(self, other.ast)
|
31
31
|
when Range
|
32
|
-
if other.
|
32
|
+
if other.begin == -Float::INFINITY && other.end == Float::INFINITY
|
33
|
+
Nodes::NotIn.new self, []
|
34
|
+
elsif other.end == Float::INFINITY
|
35
|
+
Nodes::GreaterThanOrEqual.new(self, other.begin)
|
36
|
+
elsif other.begin == -Float::INFINITY && other.exclude_end?
|
37
|
+
Nodes::LessThan.new(self, other.end)
|
38
|
+
elsif other.begin == -Float::INFINITY
|
39
|
+
Nodes::LessThanOrEqual.new(self, other.end)
|
40
|
+
elsif other.exclude_end?
|
33
41
|
left = Nodes::GreaterThanOrEqual.new(self, other.begin)
|
34
42
|
right = Nodes::LessThan.new(self, other.end)
|
35
43
|
Nodes::And.new [left, right]
|
@@ -54,7 +62,15 @@ module Arel
|
|
54
62
|
when Arel::SelectManager
|
55
63
|
Arel::Nodes::NotIn.new(self, other.ast)
|
56
64
|
when Range
|
57
|
-
if other.
|
65
|
+
if other.begin == -Float::INFINITY && other.end == Float::INFINITY
|
66
|
+
Nodes::In.new self, []
|
67
|
+
elsif other.end == Float::INFINITY
|
68
|
+
Nodes::LessThan.new(self, other.begin)
|
69
|
+
elsif other.begin == -Float::INFINITY && other.exclude_end?
|
70
|
+
Nodes::GreaterThanOrEqual.new(self, other.end)
|
71
|
+
elsif other.begin == -Float::INFINITY
|
72
|
+
Nodes::GreaterThan.new(self, other.end)
|
73
|
+
elsif other.exclude_end?
|
58
74
|
left = Nodes::LessThan.new(self, other.begin)
|
59
75
|
right = Nodes::GreaterThanOrEqual.new(self, other.end)
|
60
76
|
Nodes::Or.new left, right
|
data/lib/arel/visitors/to_sql.rb
CHANGED
@@ -147,11 +147,11 @@ key on UpdateManager using UpdateManager#key=
|
|
147
147
|
|
148
148
|
return nil unless table_exists? table
|
149
149
|
|
150
|
-
column_cache
|
150
|
+
column_cache(table)[name]
|
151
151
|
end
|
152
152
|
|
153
|
-
def column_cache
|
154
|
-
@schema_cache.columns_hash
|
153
|
+
def column_cache(table)
|
154
|
+
@schema_cache.columns_hash(table)
|
155
155
|
end
|
156
156
|
|
157
157
|
def visit_Arel_Nodes_Values o
|
data/test/support/fake_record.rb
CHANGED
@@ -3,7 +3,7 @@ module FakeRecord
|
|
3
3
|
end
|
4
4
|
|
5
5
|
class Connection
|
6
|
-
attr_reader :tables
|
6
|
+
attr_reader :tables
|
7
7
|
attr_accessor :visitor
|
8
8
|
|
9
9
|
def initialize(visitor = nil)
|
@@ -31,6 +31,10 @@ module FakeRecord
|
|
31
31
|
@visitor = visitor
|
32
32
|
end
|
33
33
|
|
34
|
+
def columns_hash table_name
|
35
|
+
@columns_hash[table_name]
|
36
|
+
end
|
37
|
+
|
34
38
|
def primary_key name
|
35
39
|
@primary_keys[name.to_s]
|
36
40
|
end
|
@@ -230,6 +230,23 @@ module Arel
|
|
230
230
|
}
|
231
231
|
end
|
232
232
|
|
233
|
+
it 'can handle ranges bounded by infinity' do
|
234
|
+
node = @attr.in 1..Float::INFINITY
|
235
|
+
@visitor.accept(node).must_be_like %{
|
236
|
+
"users"."id" >= 1
|
237
|
+
}
|
238
|
+
node = @attr.in(-Float::INFINITY..3)
|
239
|
+
@visitor.accept(node).must_be_like %{
|
240
|
+
"users"."id" <= 3
|
241
|
+
}
|
242
|
+
node = @attr.in(-Float::INFINITY...3)
|
243
|
+
@visitor.accept(node).must_be_like %{
|
244
|
+
"users"."id" < 3
|
245
|
+
}
|
246
|
+
node = @attr.in(-Float::INFINITY..Float::INFINITY)
|
247
|
+
@visitor.accept(node).must_be_like %{1=1}
|
248
|
+
end
|
249
|
+
|
233
250
|
it 'can handle subqueries' do
|
234
251
|
table = Table.new(:users)
|
235
252
|
subquery = table.project(:id).where(table[:name].eq('Aaron'))
|
@@ -316,6 +333,23 @@ module Arel
|
|
316
333
|
}
|
317
334
|
end
|
318
335
|
|
336
|
+
it 'can handle ranges bounded by infinity' do
|
337
|
+
node = @attr.not_in 1..Float::INFINITY
|
338
|
+
@visitor.accept(node).must_be_like %{
|
339
|
+
"users"."id" < 1
|
340
|
+
}
|
341
|
+
node = @attr.not_in(-Float::INFINITY..3)
|
342
|
+
@visitor.accept(node).must_be_like %{
|
343
|
+
"users"."id" > 3
|
344
|
+
}
|
345
|
+
node = @attr.not_in(-Float::INFINITY...3)
|
346
|
+
@visitor.accept(node).must_be_like %{
|
347
|
+
"users"."id" >= 3
|
348
|
+
}
|
349
|
+
node = @attr.not_in(-Float::INFINITY..Float::INFINITY)
|
350
|
+
@visitor.accept(node).must_be_like %{1=0}
|
351
|
+
end
|
352
|
+
|
319
353
|
it 'can handle subqueries' do
|
320
354
|
table = Table.new(:users)
|
321
355
|
subquery = table.project(:id).where(table[:name].eq('Aaron'))
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-03-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: minitest
|
@@ -231,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
version: 1.3.1
|
232
232
|
requirements: []
|
233
233
|
rubyforge_project: arel
|
234
|
-
rubygems_version: 2.0.
|
234
|
+
rubygems_version: 2.0.2
|
235
235
|
signing_key:
|
236
236
|
specification_version: 4
|
237
237
|
summary: Arel is a SQL AST manager for Ruby
|