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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -2
  3. data/History.txt +9 -4
  4. data/Manifest.txt +9 -7
  5. data/README.markdown +85 -8
  6. data/Rakefile +1 -1
  7. data/arel.gemspec +15 -16
  8. data/lib/arel.rb +1 -12
  9. data/lib/arel/collectors/bind.rb +36 -0
  10. data/lib/arel/collectors/plain_string.rb +18 -0
  11. data/lib/arel/collectors/sql_string.rb +18 -0
  12. data/lib/arel/factory_methods.rb +1 -1
  13. data/lib/arel/insert_manager.rb +5 -1
  14. data/lib/arel/nodes.rb +41 -0
  15. data/lib/arel/nodes/and.rb +1 -5
  16. data/lib/arel/nodes/binary.rb +2 -0
  17. data/lib/arel/nodes/extract.rb +0 -2
  18. data/lib/arel/nodes/full_outer_join.rb +6 -0
  19. data/lib/arel/nodes/function.rb +0 -1
  20. data/lib/arel/nodes/insert_statement.rb +5 -2
  21. data/lib/arel/nodes/node.rb +5 -1
  22. data/lib/arel/nodes/right_outer_join.rb +6 -0
  23. data/lib/arel/nodes/window.rb +23 -5
  24. data/lib/arel/predications.rb +41 -33
  25. data/lib/arel/select_manager.rb +13 -37
  26. data/lib/arel/table.rb +13 -9
  27. data/lib/arel/tree_manager.rb +8 -2
  28. data/lib/arel/update_manager.rb +2 -2
  29. data/lib/arel/visitors.rb +0 -2
  30. data/lib/arel/visitors/bind_substitute.rb +9 -0
  31. data/lib/arel/visitors/bind_visitor.rb +10 -5
  32. data/lib/arel/visitors/depth_first.rb +60 -57
  33. data/lib/arel/visitors/dot.rb +84 -80
  34. data/lib/arel/visitors/ibm_db.rb +4 -2
  35. data/lib/arel/visitors/informix.rb +39 -21
  36. data/lib/arel/visitors/mssql.rb +41 -23
  37. data/lib/arel/visitors/mysql.rb +48 -22
  38. data/lib/arel/visitors/oracle.rb +33 -24
  39. data/lib/arel/visitors/postgresql.rb +15 -8
  40. data/lib/arel/visitors/reduce.rb +25 -0
  41. data/lib/arel/visitors/sqlite.rb +3 -2
  42. data/lib/arel/visitors/to_sql.rb +455 -248
  43. data/lib/arel/visitors/visitor.rb +2 -2
  44. data/lib/arel/visitors/where_sql.rb +3 -2
  45. data/test/attributes/test_attribute.rb +12 -3
  46. data/test/collectors/test_bind_collector.rb +70 -0
  47. data/test/collectors/test_sql_string.rb +38 -0
  48. data/test/helper.rb +10 -1
  49. data/test/nodes/test_bin.rb +2 -2
  50. data/test/nodes/test_count.rb +0 -6
  51. data/test/nodes/test_equality.rb +1 -1
  52. data/test/nodes/test_grouping.rb +1 -1
  53. data/test/nodes/test_infix_operation.rb +1 -1
  54. data/test/nodes/test_select_core.rb +7 -7
  55. data/test/nodes/test_sql_literal.rb +10 -6
  56. data/test/nodes/test_window.rb +9 -3
  57. data/test/support/fake_record.rb +16 -4
  58. data/test/test_factory_methods.rb +1 -1
  59. data/test/test_insert_manager.rb +33 -4
  60. data/test/test_select_manager.rb +164 -92
  61. data/test/test_table.rb +49 -4
  62. data/test/visitors/test_bind_visitor.rb +18 -10
  63. data/test/visitors/test_depth_first.rb +12 -0
  64. data/test/visitors/test_dot.rb +4 -4
  65. data/test/visitors/test_ibm_db.rb +11 -5
  66. data/test/visitors/test_informix.rb +14 -8
  67. data/test/visitors/test_mssql.rb +12 -8
  68. data/test/visitors/test_mysql.rb +17 -12
  69. data/test/visitors/test_oracle.rb +25 -21
  70. data/test/visitors/test_postgres.rb +50 -12
  71. data/test/visitors/test_sqlite.rb +2 -2
  72. data/test/visitors/test_to_sql.rb +177 -81
  73. metadata +24 -19
  74. data/lib/arel/deprecated.rb +0 -4
  75. data/lib/arel/expression.rb +0 -5
  76. data/lib/arel/sql/engine.rb +0 -10
  77. data/lib/arel/sql_literal.rb +0 -4
  78. data/lib/arel/visitors/join_sql.rb +0 -19
  79. data/lib/arel/visitors/order_clauses.rb +0 -11
  80. 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: 5.0.1.20140414130214
4
+ version: 6.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
- - Bryan Halmkamp
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-04-14 00:00:00.000000000 Z
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.3'
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.3'
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.6'
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.6'
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: '0'
236
+ version: 1.3.1
233
237
  requirements: []
234
- rubyforge_project: arel
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
@@ -1,4 +0,0 @@
1
- module Arel
2
- InnerJoin = Nodes::InnerJoin
3
- OuterJoin = Nodes::OuterJoin
4
- end
@@ -1,5 +0,0 @@
1
- module Arel
2
- module Expression
3
- include Arel::OrderPredications
4
- end
5
- end
@@ -1,10 +0,0 @@
1
- module Arel
2
- module Sql
3
- class Engine
4
- def self.new thing
5
- #warn "#{caller.first} -- Engine will be removed"
6
- thing
7
- end
8
- end
9
- end
10
- end
@@ -1,4 +0,0 @@
1
- module Arel
2
- class SqlLiteral < Nodes::SqlLiteral
3
- end
4
- end
@@ -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,11 +0,0 @@
1
- module Arel
2
- module Visitors
3
- class OrderClauses < Arel::Visitors::ToSql
4
- private
5
-
6
- def visit_Arel_Nodes_SelectStatement o, a
7
- o.orders.map { |x| visit x, a }
8
- end
9
- end
10
- end
11
- 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