arel 5.0.1.20140414130214 → 6.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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