arel 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/History.txt +8 -0
  2. data/README.markdown +0 -2
  3. data/Rakefile +2 -2
  4. data/arel.gemspec +13 -3
  5. data/lib/arel.rb +2 -2
  6. data/lib/arel/algebra/relations/relation.rb +3 -2
  7. data/lib/arel/engines/sql/compilers/ibm_db_compiler.rb +62 -0
  8. data/lib/arel/engines/sql/compilers/mysql_compiler.rb +11 -0
  9. data/lib/arel/engines/sql/compilers/oracle_compiler.rb +95 -0
  10. data/lib/arel/engines/sql/compilers/postgresql_compiler.rb +42 -0
  11. data/lib/arel/engines/sql/compilers/sqlite_compiler.rb +9 -0
  12. data/lib/arel/engines/sql/engine.rb +17 -3
  13. data/lib/arel/engines/sql/formatters.rb +3 -3
  14. data/lib/arel/engines/sql/relations.rb +1 -0
  15. data/lib/arel/engines/sql/relations/compiler.rb +118 -0
  16. data/lib/arel/engines/sql/relations/relation.rb +38 -63
  17. data/lib/arel/engines/sql/relations/table.rb +23 -3
  18. data/lib/arel/engines/sql/relations/utilities/externalization.rb +1 -1
  19. data/lib/arel/engines/sql/relations/writes.rb +4 -71
  20. data/spec/arel/algebra/unit/relations/relation_spec.rb +1 -2
  21. data/spec/arel/algebra/unit/relations/table_spec.rb +0 -1
  22. data/spec/arel/engines/memory/integration/joins/cross_engine_spec.rb +9 -4
  23. data/spec/arel/engines/sql/integration/joins/with_adjacency_spec.rb +68 -19
  24. data/spec/arel/engines/sql/integration/joins/with_aggregations_spec.rb +74 -20
  25. data/spec/arel/engines/sql/integration/joins/with_compounds_spec.rb +33 -3
  26. data/spec/arel/engines/sql/unit/predicates/binary_spec.rb +22 -2
  27. data/spec/arel/engines/sql/unit/predicates/equality_spec.rb +15 -3
  28. data/spec/arel/engines/sql/unit/predicates/in_spec.rb +59 -5
  29. data/spec/arel/engines/sql/unit/predicates/predicates_spec.rb +12 -0
  30. data/spec/arel/engines/sql/unit/primitives/attribute_spec.rb +24 -1
  31. data/spec/arel/engines/sql/unit/primitives/expression_spec.rb +5 -1
  32. data/spec/arel/engines/sql/unit/primitives/literal_spec.rb +10 -2
  33. data/spec/arel/engines/sql/unit/relations/alias_spec.rb +11 -1
  34. data/spec/arel/engines/sql/unit/relations/delete_spec.rb +23 -3
  35. data/spec/arel/engines/sql/unit/relations/from_spec.rb +16 -2
  36. data/spec/arel/engines/sql/unit/relations/group_spec.rb +18 -2
  37. data/spec/arel/engines/sql/unit/relations/having_spec.rb +12 -3
  38. data/spec/arel/engines/sql/unit/relations/insert_spec.rb +37 -1
  39. data/spec/arel/engines/sql/unit/relations/join_spec.rb +53 -11
  40. data/spec/arel/engines/sql/unit/relations/lock_spec.rb +25 -0
  41. data/spec/arel/engines/sql/unit/relations/order_spec.rb +52 -4
  42. data/spec/arel/engines/sql/unit/relations/project_spec.rb +38 -5
  43. data/spec/arel/engines/sql/unit/relations/skip_spec.rb +10 -1
  44. data/spec/arel/engines/sql/unit/relations/table_spec.rb +26 -5
  45. data/spec/arel/engines/sql/unit/relations/take_spec.rb +18 -1
  46. data/spec/arel/engines/sql/unit/relations/update_spec.rb +47 -1
  47. data/spec/arel/engines/sql/unit/relations/where_spec.rb +18 -2
  48. data/spec/connections/oracle_connection.rb +19 -0
  49. data/spec/schemas/mysql_schema.rb +2 -1
  50. data/spec/schemas/oracle_schema.rb +20 -0
  51. data/spec/schemas/postgresql_schema.rb +2 -1
  52. data/spec/schemas/sqlite3_schema.rb +2 -1
  53. data/spec/spec_helper.rb +16 -7
  54. metadata +31 -9
@@ -17,16 +17,25 @@ module Arel
17
17
  sql.should be_like(%Q{
18
18
  SELECT `users`.`id`, `users`.`name`, `users_2`.`id`, `users_2`.`name`
19
19
  FROM `users`
20
- INNER JOIN `users` AS `users_2`
20
+ INNER JOIN `users` `users_2`
21
21
  ON `users`.`id` = `users_2`.`id`
22
22
  })
23
23
  end
24
24
 
25
- adapter_is_not :mysql do
25
+ adapter_is :oracle do
26
+ sql.should be_like(%Q{
27
+ SELECT "USERS"."ID", "USERS"."NAME", "USERS_2"."ID", "USERS_2"."NAME"
28
+ FROM "USERS"
29
+ INNER JOIN "USERS" "USERS_2"
30
+ ON "USERS"."ID" = "USERS_2"."ID"
31
+ })
32
+ end
33
+
34
+ adapter_is_not :mysql, :oracle do
26
35
  sql.should be_like(%Q{
27
36
  SELECT "users"."id", "users"."name", "users_2"."id", "users_2"."name"
28
37
  FROM "users"
29
- INNER JOIN "users" AS "users_2"
38
+ INNER JOIN "users" "users_2"
30
39
  ON "users"."id" = "users_2"."id"
31
40
  })
32
41
  end
@@ -43,16 +52,25 @@ module Arel
43
52
  sql.should be_like(%Q{
44
53
  SELECT `users`.`id`, `users`.`name`, `users_2`.`id`, `users_2`.`name`
45
54
  FROM `users`
46
- INNER JOIN `users` AS `users_2`
55
+ INNER JOIN `users` `users_2`
47
56
  ON `users`.`id` = `users_2`.`id` AND `users_2`.`id` = 1
48
57
  })
49
58
  end
50
59
 
51
- adapter_is_not :mysql do
60
+ adapter_is :oracle do
61
+ sql.should be_like(%Q{
62
+ SELECT "USERS"."ID", "USERS"."NAME", "USERS_2"."ID", "USERS_2"."NAME"
63
+ FROM "USERS"
64
+ INNER JOIN "USERS" "USERS_2"
65
+ ON "USERS"."ID" = "USERS_2"."ID" AND "USERS_2"."ID" = 1
66
+ })
67
+ end
68
+
69
+ adapter_is_not :mysql, :oracle do
52
70
  sql.should be_like(%Q{
53
71
  SELECT "users"."id", "users"."name", "users_2"."id", "users_2"."name"
54
72
  FROM "users"
55
- INNER JOIN "users" AS "users_2"
73
+ INNER JOIN "users" "users_2"
56
74
  ON "users"."id" = "users_2"."id" AND "users_2"."id" = 1
57
75
  })
58
76
  end
@@ -71,16 +89,25 @@ module Arel
71
89
  sql.should be_like(%Q{
72
90
  SELECT `users`.`id`, `users`.`name`, `users_2`.`id`, `users_2`.`name`
73
91
  FROM `users`
74
- INNER JOIN `users` AS `users_2`
92
+ INNER JOIN `users` `users_2`
75
93
  ON `users_2`.`id` = `users`.`id` AND `users_2`.`id` = 1
76
94
  })
77
95
  end
78
96
 
79
- adapter_is_not :mysql do
97
+ adapter_is :oracle do
98
+ sql.should be_like(%Q{
99
+ SELECT "USERS"."ID", "USERS"."NAME", "USERS_2"."ID", "USERS_2"."NAME"
100
+ FROM "USERS"
101
+ INNER JOIN "USERS" "USERS_2"
102
+ ON "USERS_2"."ID" = "USERS"."ID" AND "USERS_2"."ID" = 1
103
+ })
104
+ end
105
+
106
+ adapter_is_not :mysql, :oracle do
80
107
  sql.should be_like(%Q{
81
108
  SELECT "users"."id", "users"."name", "users_2"."id", "users_2"."name"
82
109
  FROM "users"
83
- INNER JOIN "users" AS "users_2"
110
+ INNER JOIN "users" "users_2"
84
111
  ON "users_2"."id" = "users"."id" AND "users_2"."id" = 1
85
112
  })
86
113
  end
@@ -106,20 +133,31 @@ module Arel
106
133
  sql.should be_like(%Q{
107
134
  SELECT `users`.`id`, `users`.`name`, `users_2`.`id`, `users_2`.`name`, `users_3`.`id`, `users_3`.`name`
108
135
  FROM `users`
109
- INNER JOIN `users` AS `users_2`
136
+ INNER JOIN `users` `users_2`
110
137
  ON `users`.`id` = `users_2`.`id`
111
- INNER JOIN `users` AS `users_3`
138
+ INNER JOIN `users` `users_3`
112
139
  ON `users_2`.`id` = `users_3`.`id`
113
140
  })
114
141
  end
115
142
 
116
- adapter_is_not :mysql do
143
+ adapter_is :oracle do
144
+ sql.should be_like(%Q{
145
+ SELECT "USERS"."ID", "USERS"."NAME", "USERS_2"."ID", "USERS_2"."NAME", "USERS_3"."ID", "USERS_3"."NAME"
146
+ FROM "USERS"
147
+ INNER JOIN "USERS" "USERS_2"
148
+ ON "USERS"."ID" = "USERS_2"."ID"
149
+ INNER JOIN "USERS" "USERS_3"
150
+ ON "USERS_2"."ID" = "USERS_3"."ID"
151
+ })
152
+ end
153
+
154
+ adapter_is_not :mysql, :oracle do
117
155
  sql.should be_like(%Q{
118
156
  SELECT "users"."id", "users"."name", "users_2"."id", "users_2"."name", "users_3"."id", "users_3"."name"
119
157
  FROM "users"
120
- INNER JOIN "users" AS "users_2"
158
+ INNER JOIN "users" "users_2"
121
159
  ON "users"."id" = "users_2"."id"
122
- INNER JOIN "users" AS "users_3"
160
+ INNER JOIN "users" "users_3"
123
161
  ON "users_2"."id" = "users_3"."id"
124
162
  })
125
163
  end
@@ -137,20 +175,31 @@ module Arel
137
175
  sql.should be_like(%Q{
138
176
  SELECT `users`.`id`, `users`.`name`, `users_2`.`id`, `users_2`.`name`, `users_3`.`id`, `users_3`.`name`
139
177
  FROM `users`
140
- INNER JOIN `users` AS `users_2`
178
+ INNER JOIN `users` `users_2`
141
179
  ON `users`.`id` = `users_2`.`id`
142
- INNER JOIN `users` AS `users_3`
180
+ INNER JOIN `users` `users_3`
143
181
  ON `users_2`.`id` = `users_3`.`id`
144
182
  })
145
183
  end
146
184
 
147
- adapter_is_not :mysql do
185
+ adapter_is :oracle do
186
+ sql.should be_like(%Q{
187
+ SELECT "USERS"."ID", "USERS"."NAME", "USERS_2"."ID", "USERS_2"."NAME", "USERS_3"."ID", "USERS_3"."NAME"
188
+ FROM "USERS"
189
+ INNER JOIN "USERS" "USERS_2"
190
+ ON "USERS"."ID" = "USERS_2"."ID"
191
+ INNER JOIN "USERS" "USERS_3"
192
+ ON "USERS_2"."ID" = "USERS_3"."ID"
193
+ })
194
+ end
195
+
196
+ adapter_is_not :mysql, :oracle do
148
197
  sql.should be_like(%Q{
149
198
  SELECT "users"."id", "users"."name", "users_2"."id", "users_2"."name", "users_3"."id", "users_3"."name"
150
199
  FROM "users"
151
- INNER JOIN "users" AS "users_2"
200
+ INNER JOIN "users" "users_2"
152
201
  ON "users"."id" = "users_2"."id"
153
- INNER JOIN "users" AS "users_3"
202
+ INNER JOIN "users" "users_3"
154
203
  ON "users_2"."id" = "users_3"."id"
155
204
  })
156
205
  end
@@ -24,16 +24,25 @@ module Arel
24
24
  sql.should be_like(%Q{
25
25
  SELECT `users`.`id`, `users`.`name`, `photos_external`.`id`, `photos_external`.`user_id`, `photos_external`.`camera_id`
26
26
  FROM `users`
27
- INNER JOIN (SELECT `photos`.`id`, `photos`.`user_id`, `photos`.`camera_id` FROM `photos` LIMIT 3) AS `photos_external`
27
+ INNER JOIN (SELECT `photos`.`id`, `photos`.`user_id`, `photos`.`camera_id` FROM `photos` LIMIT 3) `photos_external`
28
28
  ON `users`.`id` = `photos_external`.`user_id`
29
29
  })
30
30
  end
31
31
 
32
- adapter_is_not :mysql do
32
+ adapter_is :oracle do
33
+ sql.should be_like(%Q{
34
+ SELECT "USERS"."ID", "USERS"."NAME", "PHOTOS_EXTERNAL"."ID", "PHOTOS_EXTERNAL"."USER_ID", "PHOTOS_EXTERNAL"."CAMERA_ID"
35
+ FROM "USERS"
36
+ INNER JOIN (SELECT "PHOTOS"."ID", "PHOTOS"."USER_ID", "PHOTOS"."CAMERA_ID" FROM "PHOTOS" WHERE ROWNUM <= 3) "PHOTOS_EXTERNAL"
37
+ ON "USERS"."ID" = "PHOTOS_EXTERNAL"."USER_ID"
38
+ })
39
+ end
40
+
41
+ adapter_is_not :mysql, :oracle do
33
42
  sql.should be_like(%Q{
34
43
  SELECT "users"."id", "users"."name", "photos_external"."id", "photos_external"."user_id", "photos_external"."camera_id"
35
44
  FROM "users"
36
- INNER JOIN (SELECT "photos"."id", "photos"."user_id", "photos"."camera_id" FROM "photos" LIMIT 3) AS "photos_external"
45
+ INNER JOIN (SELECT "photos"."id", "photos"."user_id", "photos"."camera_id" FROM "photos" LIMIT 3) "photos_external"
37
46
  ON "users"."id" = "photos_external"."user_id"
38
47
  })
39
48
  end
@@ -47,16 +56,25 @@ module Arel
47
56
  sql.should be_like(%Q{
48
57
  SELECT `users`.`id`, `users`.`name`, `photos_external`.`user_id`, `photos_external`.`cnt`
49
58
  FROM `users`
50
- INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) AS `photos_external`
59
+ INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) `photos_external`
51
60
  ON `users`.`id` = `photos_external`.`user_id`
52
61
  })
53
62
  end
54
63
 
55
- adapter_is_not :mysql do
64
+ adapter_is :oracle do
65
+ sql.should be_like(%Q{
66
+ SELECT "USERS"."ID", "USERS"."NAME", "PHOTOS_EXTERNAL"."USER_ID", "PHOTOS_EXTERNAL"."CNT"
67
+ FROM "USERS"
68
+ INNER JOIN (SELECT "PHOTOS"."USER_ID", COUNT("PHOTOS"."ID") AS "CNT" FROM "PHOTOS" GROUP BY "PHOTOS"."USER_ID") "PHOTOS_EXTERNAL"
69
+ ON "USERS"."ID" = "PHOTOS_EXTERNAL"."USER_ID"
70
+ })
71
+ end
72
+
73
+ adapter_is_not :mysql, :oracle do
56
74
  sql.should be_like(%Q{
57
75
  SELECT "users"."id", "users"."name", "photos_external"."user_id", "photos_external"."cnt"
58
76
  FROM "users"
59
- INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") AS "photos_external"
77
+ INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") "photos_external"
60
78
  ON "users"."id" = "photos_external"."user_id"
61
79
  })
62
80
  end
@@ -70,16 +88,25 @@ module Arel
70
88
  adapter_is :mysql do
71
89
  sql.should be_like(%Q{
72
90
  SELECT `photos_external`.`user_id`, `photos_external`.`cnt`, `users`.`id`, `users`.`name`
73
- FROM (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) AS `photos_external`
91
+ FROM (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) `photos_external`
74
92
  INNER JOIN `users`
75
93
  ON `users`.`id` = `photos_external`.`user_id`
76
94
  })
77
95
  end
78
96
 
79
- adapter_is_not :mysql do
97
+ adapter_is :oracle do
98
+ sql.should be_like(%Q{
99
+ SELECT "PHOTOS_EXTERNAL"."USER_ID", "PHOTOS_EXTERNAL"."CNT", "USERS"."ID", "USERS"."NAME"
100
+ FROM (SELECT "PHOTOS"."USER_ID", COUNT("PHOTOS"."ID") AS "CNT" FROM "PHOTOS" GROUP BY "PHOTOS"."USER_ID") "PHOTOS_EXTERNAL"
101
+ INNER JOIN "USERS"
102
+ ON "USERS"."ID" = "PHOTOS_EXTERNAL"."USER_ID"
103
+ })
104
+ end
105
+
106
+ adapter_is_not :mysql, :oracle do
80
107
  sql.should be_like(%Q{
81
108
  SELECT "photos_external"."user_id", "photos_external"."cnt", "users"."id", "users"."name"
82
- FROM (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") AS "photos_external"
109
+ FROM (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") "photos_external"
83
110
  INNER JOIN "users"
84
111
  ON "users"."id" = "photos_external"."user_id"
85
112
  })
@@ -95,17 +122,26 @@ module Arel
95
122
  adapter_is :mysql do
96
123
  sql.should be_like(%Q{
97
124
  SELECT `photos_external`.`user_id`, `photos_external`.`cnt`, `photos_external_2`.`user_id`, `photos_external_2`.`cnt`
98
- FROM (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) AS `photos_external`
99
- INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) AS `photos_external_2`
125
+ FROM (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) `photos_external`
126
+ INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`) `photos_external_2`
100
127
  ON `photos_external_2`.`user_id` = `photos_external`.`user_id`
101
128
  })
102
129
  end
103
130
 
104
- adapter_is_not :mysql do
131
+ adapter_is :oracle do
132
+ sql.should be_like(%Q{
133
+ SELECT "PHOTOS_EXTERNAL"."USER_ID", "PHOTOS_EXTERNAL"."CNT", "PHOTOS_EXTERNAL_2"."USER_ID", "PHOTOS_EXTERNAL_2"."CNT"
134
+ FROM (SELECT "PHOTOS"."USER_ID", COUNT("PHOTOS"."ID") AS "CNT" FROM "PHOTOS" GROUP BY "PHOTOS"."USER_ID") "PHOTOS_EXTERNAL"
135
+ INNER JOIN (SELECT "PHOTOS"."USER_ID", COUNT("PHOTOS"."ID") AS "CNT" FROM "PHOTOS" GROUP BY "PHOTOS"."USER_ID") "PHOTOS_EXTERNAL_2"
136
+ ON "PHOTOS_EXTERNAL_2"."USER_ID" = "PHOTOS_EXTERNAL"."USER_ID"
137
+ })
138
+ end
139
+
140
+ adapter_is_not :mysql, :oracle do
105
141
  sql.should be_like(%Q{
106
142
  SELECT "photos_external"."user_id", "photos_external"."cnt", "photos_external_2"."user_id", "photos_external_2"."cnt"
107
- FROM (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") AS "photos_external"
108
- INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") AS "photos_external_2"
143
+ FROM (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") "photos_external"
144
+ INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id") "photos_external_2"
109
145
  ON "photos_external_2"."user_id" = "photos_external"."user_id"
110
146
  })
111
147
  end
@@ -121,16 +157,25 @@ module Arel
121
157
  sql.should be_like(%Q{
122
158
  SELECT `users`.`id`, `users`.`name`, `photos_external`.`user_id`, `photos_external`.`cnt`
123
159
  FROM `users`
124
- INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` WHERE `photos`.`user_id` = 1 GROUP BY `photos`.`user_id`) AS `photos_external`
160
+ INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` WHERE `photos`.`user_id` = 1 GROUP BY `photos`.`user_id`) `photos_external`
125
161
  ON `users`.`id` = `photos_external`.`user_id`
126
162
  })
127
163
  end
128
164
 
129
- adapter_is_not :mysql do
165
+ adapter_is :oracle do
166
+ sql.should be_like(%Q{
167
+ SELECT "USERS"."ID", "USERS"."NAME", "PHOTOS_EXTERNAL"."USER_ID", "PHOTOS_EXTERNAL"."CNT"
168
+ FROM "USERS"
169
+ INNER JOIN (SELECT "PHOTOS"."USER_ID", COUNT("PHOTOS"."ID") AS "CNT" FROM "PHOTOS" WHERE "PHOTOS"."USER_ID" = 1 GROUP BY "PHOTOS"."USER_ID") "PHOTOS_EXTERNAL"
170
+ ON "USERS"."ID" = "PHOTOS_EXTERNAL"."USER_ID"
171
+ })
172
+ end
173
+
174
+ adapter_is_not :mysql, :oracle do
130
175
  sql.should be_like(%Q{
131
176
  SELECT "users"."id", "users"."name", "photos_external"."user_id", "photos_external"."cnt"
132
177
  FROM "users"
133
- INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" WHERE "photos"."user_id" = 1 GROUP BY "photos"."user_id") AS "photos_external"
178
+ INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" WHERE "photos"."user_id" = 1 GROUP BY "photos"."user_id") "photos_external"
134
179
  ON "users"."id" = "photos_external"."user_id"
135
180
  })
136
181
  end
@@ -144,16 +189,25 @@ module Arel
144
189
  adapter_is :mysql do
145
190
  sql.should be_like(%Q{
146
191
  SELECT `photos_external`.`user_id`, `photos_external`.`cnt`, `users`.`id`, `users`.`name`
147
- FROM (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` WHERE `photos`.`user_id` = 1 GROUP BY `photos`.`user_id`) AS `photos_external`
192
+ FROM (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` WHERE `photos`.`user_id` = 1 GROUP BY `photos`.`user_id`) `photos_external`
148
193
  INNER JOIN `users`
149
194
  ON `users`.`id` = `photos_external`.`user_id`
150
195
  })
151
196
  end
152
197
 
153
- adapter_is_not :mysql do
198
+ adapter_is :oracle do
199
+ sql.should be_like(%Q{
200
+ SELECT "PHOTOS_EXTERNAL"."USER_ID", "PHOTOS_EXTERNAL"."CNT", "USERS"."ID", "USERS"."NAME"
201
+ FROM (SELECT "PHOTOS"."USER_ID", COUNT("PHOTOS"."ID") AS "CNT" FROM "PHOTOS" WHERE "PHOTOS"."USER_ID" = 1 GROUP BY "PHOTOS"."USER_ID") "PHOTOS_EXTERNAL"
202
+ INNER JOIN "USERS"
203
+ ON "USERS"."ID" = "PHOTOS_EXTERNAL"."USER_ID"
204
+ })
205
+ end
206
+
207
+ adapter_is_not :mysql, :oracle do
154
208
  sql.should be_like(%Q{
155
209
  SELECT "photos_external"."user_id", "photos_external"."cnt", "users"."id", "users"."name"
156
- FROM (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" WHERE "photos"."user_id" = 1 GROUP BY "photos"."user_id") AS "photos_external"
210
+ FROM (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" WHERE "photos"."user_id" = 1 GROUP BY "photos"."user_id") "photos_external"
157
211
  INNER JOIN "users"
158
212
  ON "users"."id" = "photos_external"."user_id"
159
213
  })
@@ -26,7 +26,16 @@ module Arel
26
26
  })
27
27
  end
28
28
 
29
- adapter_is_not :mysql do
29
+ adapter_is :oracle do
30
+ sql.should be_like(%Q{
31
+ SELECT "USERS"."ID", "USERS"."NAME", "PHOTOS"."ID", "PHOTOS"."USER_ID", "PHOTOS"."CAMERA_ID"
32
+ FROM "USERS"
33
+ INNER JOIN "PHOTOS"
34
+ ON "USERS"."ID" = "PHOTOS"."USER_ID" AND asdf
35
+ })
36
+ end
37
+
38
+ adapter_is_not :mysql, :oracle do
30
39
  sql.should be_like(%Q{
31
40
  SELECT "users"."id", "users"."name", "photos"."id", "photos"."user_id", "photos"."camera_id"
32
41
  FROM "users"
@@ -59,7 +68,18 @@ module Arel
59
68
  })
60
69
  end
61
70
 
62
- adapter_is_not :mysql do
71
+ adapter_is :oracle do
72
+ sql.should be_like(%Q{
73
+ SELECT "USERS"."ID", "USERS"."NAME", "PHOTOS"."ID", "PHOTOS"."USER_ID", "PHOTOS"."CAMERA_ID"
74
+ FROM "USERS"
75
+ INNER JOIN "PHOTOS"
76
+ ON "USERS"."ID" = "PHOTOS"."USER_ID"
77
+ WHERE "USERS"."ID" = 1
78
+ AND "USERS"."ID" = 1
79
+ })
80
+ end
81
+
82
+ adapter_is_not :mysql, :oracle do
63
83
  sql.should be_like(%Q{
64
84
  SELECT "users"."id", "users"."name", "photos"."id", "photos"."user_id", "photos"."camera_id"
65
85
  FROM "users"
@@ -90,7 +110,17 @@ module Arel
90
110
  })
91
111
  end
92
112
 
93
- adapter_is_not :mysql do
113
+ adapter_is :oracle do
114
+ sql.should be_like(%Q{
115
+ SELECT "USERS"."ID", "USERS"."NAME", "PHOTOS"."ID", "PHOTOS"."USER_ID", "PHOTOS"."CAMERA_ID"
116
+ FROM "USERS"
117
+ INNER JOIN "PHOTOS"
118
+ ON "USERS"."ID" = "PHOTOS"."USER_ID"
119
+ GROUP BY "USERS"."ID"
120
+ })
121
+ end
122
+
123
+ adapter_is_not :mysql, :oracle do
94
124
  sql.should be_like(%Q{
95
125
  SELECT "users"."id", "users"."name", "photos"."id", "photos"."user_id", "photos"."camera_id"
96
126
  FROM "users"
@@ -37,6 +37,10 @@ module Arel
37
37
  adapter_is :sqlite3 do
38
38
  sql.should be_like(%Q{("users"."id" <=> 1 OR "users"."name" <=> 'name')})
39
39
  end
40
+
41
+ adapter_is :oracle do
42
+ sql.should be_like(%Q{("USERS"."ID" <=> 1 OR "USERS"."NAME" <=> 'name')})
43
+ end
40
44
  end
41
45
  end
42
46
  end
@@ -57,6 +61,10 @@ module Arel
57
61
  adapter_is :postgresql do
58
62
  sql.should be_like(%Q{("users"."id" <=> 1 AND "users"."name" <=> E'name')})
59
63
  end
64
+
65
+ adapter_is :oracle do
66
+ sql.should be_like(%Q{("USERS"."ID" <=> 1 AND "USERS"."NAME" <=> 'name')})
67
+ end
60
68
  end
61
69
  end
62
70
  end
@@ -71,7 +79,11 @@ module Arel
71
79
  sql.should be_like(%Q{`users`.`id` <=> `users`.`name`})
72
80
  end
73
81
 
74
- adapter_is_not :mysql do
82
+ adapter_is :oracle do
83
+ sql.should be_like(%Q{"USERS"."ID" <=> "USERS"."NAME"})
84
+ end
85
+
86
+ adapter_is_not :mysql, :oracle do
75
87
  sql.should be_like(%Q{"users"."id" <=> "users"."name"})
76
88
  end
77
89
  end
@@ -90,7 +102,11 @@ module Arel
90
102
  sql.should be_like(%Q{`users`.`id` <=> 1})
91
103
  end
92
104
 
93
- adapter_is_not :mysql do
105
+ adapter_is :oracle do
106
+ sql.should be_like(%Q{"USERS"."ID" <=> 1})
107
+ end
108
+
109
+ adapter_is_not :mysql, :oracle do
94
110
  sql.should be_like(%Q{"users"."id" <=> 1})
95
111
  end
96
112
  end
@@ -111,6 +127,10 @@ module Arel
111
127
  adapter_is :postgresql do
112
128
  sql.should be_like(%Q{"users"."name" <=> E'1-asdf'})
113
129
  end
130
+
131
+ adapter_is :oracle do
132
+ sql.should be_like(%Q{"USERS"."NAME" <=> '1-asdf'})
133
+ end
114
134
  end
115
135
  end
116
136
  end
@@ -19,7 +19,11 @@ module Arel
19
19
  sql.should be_like(%Q{`users`.`id` = `photos`.`user_id`})
20
20
  end
21
21
 
22
- adapter_is_not :mysql do
22
+ adapter_is :oracle do
23
+ sql.should be_like(%Q{"USERS"."ID" = "PHOTOS"."USER_ID"})
24
+ end
25
+
26
+ adapter_is_not :mysql, :oracle do
23
27
  sql.should be_like(%Q{"users"."id" = "photos"."user_id"})
24
28
  end
25
29
  end
@@ -37,7 +41,11 @@ module Arel
37
41
  sql.should be_like(%Q{`users`.`id` IS NULL})
38
42
  end
39
43
 
40
- adapter_is_not :mysql do
44
+ adapter_is :oracle do
45
+ sql.should be_like(%Q{"USERS"."ID" IS NULL})
46
+ end
47
+
48
+ adapter_is_not :mysql, :oracle do
41
49
  sql.should be_like(%Q{"users"."id" IS NULL})
42
50
  end
43
51
  end
@@ -52,7 +60,11 @@ module Arel
52
60
  sql.should be_like(%Q{`users`.`id` IS NULL})
53
61
  end
54
62
 
55
- adapter_is_not :mysql do
63
+ adapter_is :oracle do
64
+ sql.should be_like(%Q{"USERS"."ID" IS NULL})
65
+ end
66
+
67
+ adapter_is_not :mysql, :oracle do
56
68
  sql.should be_like(%Q{"users"."id" IS NULL})
57
69
  end
58
70
  end