arel 5.0.1.20140414130214 → 6.0.0.beta1
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 +4 -4
- data/.travis.yml +4 -2
- data/History.txt +9 -4
- data/Manifest.txt +9 -7
- data/README.markdown +85 -8
- data/Rakefile +1 -1
- data/arel.gemspec +15 -16
- data/lib/arel.rb +1 -12
- data/lib/arel/collectors/bind.rb +36 -0
- data/lib/arel/collectors/plain_string.rb +18 -0
- data/lib/arel/collectors/sql_string.rb +18 -0
- data/lib/arel/factory_methods.rb +1 -1
- data/lib/arel/insert_manager.rb +5 -1
- data/lib/arel/nodes.rb +41 -0
- data/lib/arel/nodes/and.rb +1 -5
- data/lib/arel/nodes/binary.rb +2 -0
- data/lib/arel/nodes/extract.rb +0 -2
- data/lib/arel/nodes/full_outer_join.rb +6 -0
- data/lib/arel/nodes/function.rb +0 -1
- data/lib/arel/nodes/insert_statement.rb +5 -2
- data/lib/arel/nodes/node.rb +5 -1
- data/lib/arel/nodes/right_outer_join.rb +6 -0
- data/lib/arel/nodes/window.rb +23 -5
- data/lib/arel/predications.rb +41 -33
- data/lib/arel/select_manager.rb +13 -37
- data/lib/arel/table.rb +13 -9
- data/lib/arel/tree_manager.rb +8 -2
- data/lib/arel/update_manager.rb +2 -2
- data/lib/arel/visitors.rb +0 -2
- data/lib/arel/visitors/bind_substitute.rb +9 -0
- data/lib/arel/visitors/bind_visitor.rb +10 -5
- data/lib/arel/visitors/depth_first.rb +60 -57
- data/lib/arel/visitors/dot.rb +84 -80
- data/lib/arel/visitors/ibm_db.rb +4 -2
- data/lib/arel/visitors/informix.rb +39 -21
- data/lib/arel/visitors/mssql.rb +41 -23
- data/lib/arel/visitors/mysql.rb +48 -22
- data/lib/arel/visitors/oracle.rb +33 -24
- data/lib/arel/visitors/postgresql.rb +15 -8
- data/lib/arel/visitors/reduce.rb +25 -0
- data/lib/arel/visitors/sqlite.rb +3 -2
- data/lib/arel/visitors/to_sql.rb +455 -248
- data/lib/arel/visitors/visitor.rb +2 -2
- data/lib/arel/visitors/where_sql.rb +3 -2
- data/test/attributes/test_attribute.rb +12 -3
- data/test/collectors/test_bind_collector.rb +70 -0
- data/test/collectors/test_sql_string.rb +38 -0
- data/test/helper.rb +10 -1
- data/test/nodes/test_bin.rb +2 -2
- data/test/nodes/test_count.rb +0 -6
- data/test/nodes/test_equality.rb +1 -1
- data/test/nodes/test_grouping.rb +1 -1
- data/test/nodes/test_infix_operation.rb +1 -1
- data/test/nodes/test_select_core.rb +7 -7
- data/test/nodes/test_sql_literal.rb +10 -6
- data/test/nodes/test_window.rb +9 -3
- data/test/support/fake_record.rb +16 -4
- data/test/test_factory_methods.rb +1 -1
- data/test/test_insert_manager.rb +33 -4
- data/test/test_select_manager.rb +164 -92
- data/test/test_table.rb +49 -4
- data/test/visitors/test_bind_visitor.rb +18 -10
- data/test/visitors/test_depth_first.rb +12 -0
- data/test/visitors/test_dot.rb +4 -4
- data/test/visitors/test_ibm_db.rb +11 -5
- data/test/visitors/test_informix.rb +14 -8
- data/test/visitors/test_mssql.rb +12 -8
- data/test/visitors/test_mysql.rb +17 -12
- data/test/visitors/test_oracle.rb +25 -21
- data/test/visitors/test_postgres.rb +50 -12
- data/test/visitors/test_sqlite.rb +2 -2
- data/test/visitors/test_to_sql.rb +177 -81
- metadata +24 -19
- data/lib/arel/deprecated.rb +0 -4
- data/lib/arel/expression.rb +0 -5
- data/lib/arel/sql/engine.rb +0 -10
- data/lib/arel/sql_literal.rb +0 -4
- data/lib/arel/visitors/join_sql.rb +0 -19
- data/lib/arel/visitors/order_clauses.rb +0 -11
- data/test/visitors/test_join_sql.rb +0 -42
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
|
-
- Bryan
|
8
|
+
- Bryan Helmkamp
|
9
9
|
- Emilio Tagua
|
10
10
|
- Nick Kallen
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-08-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: minitest
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - "~>"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '5.
|
22
|
+
version: '5.4'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '5.
|
29
|
+
version: '5.4'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rdoc
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -47,15 +47,17 @@ dependencies:
|
|
47
47
|
requirements:
|
48
48
|
- - "~>"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: '3.
|
50
|
+
version: '3.12'
|
51
51
|
type: :development
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - "~>"
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: '3.
|
57
|
+
version: '3.12'
|
58
58
|
description: |-
|
59
|
+
Arel Really Exasperates Logicians
|
60
|
+
|
59
61
|
Arel is a SQL AST manager for Ruby. It
|
60
62
|
|
61
63
|
1. Simplifies the generation of complex SQL queries
|
@@ -91,11 +93,12 @@ files:
|
|
91
93
|
- lib/arel/alias_predication.rb
|
92
94
|
- lib/arel/attributes.rb
|
93
95
|
- lib/arel/attributes/attribute.rb
|
96
|
+
- lib/arel/collectors/bind.rb
|
97
|
+
- lib/arel/collectors/plain_string.rb
|
98
|
+
- lib/arel/collectors/sql_string.rb
|
94
99
|
- lib/arel/compatibility/wheres.rb
|
95
100
|
- lib/arel/crud.rb
|
96
101
|
- lib/arel/delete_manager.rb
|
97
|
-
- lib/arel/deprecated.rb
|
98
|
-
- lib/arel/expression.rb
|
99
102
|
- lib/arel/expressions.rb
|
100
103
|
- lib/arel/factory_methods.rb
|
101
104
|
- lib/arel/insert_manager.rb
|
@@ -110,6 +113,7 @@ files:
|
|
110
113
|
- lib/arel/nodes/equality.rb
|
111
114
|
- lib/arel/nodes/extract.rb
|
112
115
|
- lib/arel/nodes/false.rb
|
116
|
+
- lib/arel/nodes/full_outer_join.rb
|
113
117
|
- lib/arel/nodes/function.rb
|
114
118
|
- lib/arel/nodes/grouping.rb
|
115
119
|
- lib/arel/nodes/in.rb
|
@@ -121,6 +125,7 @@ files:
|
|
121
125
|
- lib/arel/nodes/node.rb
|
122
126
|
- lib/arel/nodes/outer_join.rb
|
123
127
|
- lib/arel/nodes/over.rb
|
128
|
+
- lib/arel/nodes/right_outer_join.rb
|
124
129
|
- lib/arel/nodes/select_core.rb
|
125
130
|
- lib/arel/nodes/select_statement.rb
|
126
131
|
- lib/arel/nodes/sql_literal.rb
|
@@ -137,29 +142,29 @@ files:
|
|
137
142
|
- lib/arel/order_predications.rb
|
138
143
|
- lib/arel/predications.rb
|
139
144
|
- lib/arel/select_manager.rb
|
140
|
-
- lib/arel/sql/engine.rb
|
141
|
-
- lib/arel/sql_literal.rb
|
142
145
|
- lib/arel/table.rb
|
143
146
|
- lib/arel/tree_manager.rb
|
144
147
|
- lib/arel/update_manager.rb
|
145
148
|
- lib/arel/visitors.rb
|
149
|
+
- lib/arel/visitors/bind_substitute.rb
|
146
150
|
- lib/arel/visitors/bind_visitor.rb
|
147
151
|
- lib/arel/visitors/depth_first.rb
|
148
152
|
- lib/arel/visitors/dot.rb
|
149
153
|
- lib/arel/visitors/ibm_db.rb
|
150
154
|
- lib/arel/visitors/informix.rb
|
151
|
-
- lib/arel/visitors/join_sql.rb
|
152
155
|
- lib/arel/visitors/mssql.rb
|
153
156
|
- lib/arel/visitors/mysql.rb
|
154
157
|
- lib/arel/visitors/oracle.rb
|
155
|
-
- lib/arel/visitors/order_clauses.rb
|
156
158
|
- lib/arel/visitors/postgresql.rb
|
159
|
+
- lib/arel/visitors/reduce.rb
|
157
160
|
- lib/arel/visitors/sqlite.rb
|
158
161
|
- lib/arel/visitors/to_sql.rb
|
159
162
|
- lib/arel/visitors/visitor.rb
|
160
163
|
- lib/arel/visitors/where_sql.rb
|
161
164
|
- lib/arel/window_predications.rb
|
162
165
|
- test/attributes/test_attribute.rb
|
166
|
+
- test/collectors/test_bind_collector.rb
|
167
|
+
- test/collectors/test_sql_string.rb
|
163
168
|
- test/helper.rb
|
164
169
|
- test/nodes/test_and.rb
|
165
170
|
- test/nodes/test_as.rb
|
@@ -203,7 +208,6 @@ files:
|
|
203
208
|
- test/visitors/test_dot.rb
|
204
209
|
- test/visitors/test_ibm_db.rb
|
205
210
|
- test/visitors/test_informix.rb
|
206
|
-
- test/visitors/test_join_sql.rb
|
207
211
|
- test/visitors/test_mssql.rb
|
208
212
|
- test/visitors/test_mysql.rb
|
209
213
|
- test/visitors/test_oracle.rb
|
@@ -227,17 +231,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
231
|
version: '0'
|
228
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
233
|
requirements:
|
230
|
-
- - "
|
234
|
+
- - ">"
|
231
235
|
- !ruby/object:Gem::Version
|
232
|
-
version:
|
236
|
+
version: 1.3.1
|
233
237
|
requirements: []
|
234
|
-
rubyforge_project:
|
238
|
+
rubyforge_project:
|
235
239
|
rubygems_version: 2.2.2
|
236
240
|
signing_key:
|
237
241
|
specification_version: 4
|
238
|
-
summary: Arel is a SQL AST manager for Ruby
|
242
|
+
summary: Arel Really Exasperates Logicians Arel is a SQL AST manager for Ruby
|
239
243
|
test_files:
|
240
244
|
- test/attributes/test_attribute.rb
|
245
|
+
- test/collectors/test_bind_collector.rb
|
246
|
+
- test/collectors/test_sql_string.rb
|
241
247
|
- test/nodes/test_and.rb
|
242
248
|
- test/nodes/test_as.rb
|
243
249
|
- test/nodes/test_ascending.rb
|
@@ -279,7 +285,6 @@ test_files:
|
|
279
285
|
- test/visitors/test_dot.rb
|
280
286
|
- test/visitors/test_ibm_db.rb
|
281
287
|
- test/visitors/test_informix.rb
|
282
|
-
- test/visitors/test_join_sql.rb
|
283
288
|
- test/visitors/test_mssql.rb
|
284
289
|
- test/visitors/test_mysql.rb
|
285
290
|
- test/visitors/test_oracle.rb
|
data/lib/arel/deprecated.rb
DELETED
data/lib/arel/expression.rb
DELETED
data/lib/arel/sql/engine.rb
DELETED
data/lib/arel/sql_literal.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Arel
|
2
|
-
module Visitors
|
3
|
-
###
|
4
|
-
# This class produces SQL for JOIN clauses but omits the "single-source"
|
5
|
-
# part of the Join grammar:
|
6
|
-
#
|
7
|
-
# http://www.sqlite.org/syntaxdiagrams.html#join-source
|
8
|
-
#
|
9
|
-
# This visitor is used in SelectManager#join_sql and is for backwards
|
10
|
-
# compatibility with Arel V1.0
|
11
|
-
module JoinSql
|
12
|
-
private
|
13
|
-
|
14
|
-
def visit_Arel_Nodes_SelectCore o, a
|
15
|
-
o.source.right.map { |j| visit j, a }.join ' '
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
module Arel
|
4
|
-
module Visitors
|
5
|
-
describe 'the join_sql visitor' do
|
6
|
-
before do
|
7
|
-
@visitor = ToSql.new Table.engine.connection
|
8
|
-
@visitor.extend(JoinSql)
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'should visit string join' do
|
12
|
-
sql = @visitor.accept Nodes::StringJoin.new('omg')
|
13
|
-
sql.must_be_like "'omg'"
|
14
|
-
end
|
15
|
-
|
16
|
-
describe 'inner join' do
|
17
|
-
it 'should visit left if left is a join' do
|
18
|
-
t = Table.new :users
|
19
|
-
sm = t.select_manager
|
20
|
-
sm.join(t).on(t[:id]).join(t).on(t[:id])
|
21
|
-
sm.join_sql.must_be_like %{
|
22
|
-
INNER JOIN "users" ON "users"."id"
|
23
|
-
INNER JOIN "users" ON "users"."id"
|
24
|
-
}
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'outer join' do
|
29
|
-
it 'should visit left if left is a join' do
|
30
|
-
t = Table.new :users
|
31
|
-
sm = t.select_manager
|
32
|
-
sm.join(t, Nodes::OuterJoin).on(t[:id]).join(
|
33
|
-
t, Nodes::OuterJoin).on(t[:id])
|
34
|
-
sm.join_sql.must_be_like %{
|
35
|
-
LEFT OUTER JOIN "users" ON "users"."id"
|
36
|
-
LEFT OUTER JOIN "users" ON "users"."id"
|
37
|
-
}
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|