arel 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/README.markdown +0 -2
- data/Rakefile +2 -2
- data/arel.gemspec +13 -3
- data/lib/arel.rb +2 -2
- data/lib/arel/algebra/relations/relation.rb +3 -2
- data/lib/arel/engines/sql/compilers/ibm_db_compiler.rb +62 -0
- data/lib/arel/engines/sql/compilers/mysql_compiler.rb +11 -0
- data/lib/arel/engines/sql/compilers/oracle_compiler.rb +95 -0
- data/lib/arel/engines/sql/compilers/postgresql_compiler.rb +42 -0
- data/lib/arel/engines/sql/compilers/sqlite_compiler.rb +9 -0
- data/lib/arel/engines/sql/engine.rb +17 -3
- data/lib/arel/engines/sql/formatters.rb +3 -3
- data/lib/arel/engines/sql/relations.rb +1 -0
- data/lib/arel/engines/sql/relations/compiler.rb +118 -0
- data/lib/arel/engines/sql/relations/relation.rb +38 -63
- data/lib/arel/engines/sql/relations/table.rb +23 -3
- data/lib/arel/engines/sql/relations/utilities/externalization.rb +1 -1
- data/lib/arel/engines/sql/relations/writes.rb +4 -71
- data/spec/arel/algebra/unit/relations/relation_spec.rb +1 -2
- data/spec/arel/algebra/unit/relations/table_spec.rb +0 -1
- data/spec/arel/engines/memory/integration/joins/cross_engine_spec.rb +9 -4
- data/spec/arel/engines/sql/integration/joins/with_adjacency_spec.rb +68 -19
- data/spec/arel/engines/sql/integration/joins/with_aggregations_spec.rb +74 -20
- data/spec/arel/engines/sql/integration/joins/with_compounds_spec.rb +33 -3
- data/spec/arel/engines/sql/unit/predicates/binary_spec.rb +22 -2
- data/spec/arel/engines/sql/unit/predicates/equality_spec.rb +15 -3
- data/spec/arel/engines/sql/unit/predicates/in_spec.rb +59 -5
- data/spec/arel/engines/sql/unit/predicates/predicates_spec.rb +12 -0
- data/spec/arel/engines/sql/unit/primitives/attribute_spec.rb +24 -1
- data/spec/arel/engines/sql/unit/primitives/expression_spec.rb +5 -1
- data/spec/arel/engines/sql/unit/primitives/literal_spec.rb +10 -2
- data/spec/arel/engines/sql/unit/relations/alias_spec.rb +11 -1
- data/spec/arel/engines/sql/unit/relations/delete_spec.rb +23 -3
- data/spec/arel/engines/sql/unit/relations/from_spec.rb +16 -2
- data/spec/arel/engines/sql/unit/relations/group_spec.rb +18 -2
- data/spec/arel/engines/sql/unit/relations/having_spec.rb +12 -3
- data/spec/arel/engines/sql/unit/relations/insert_spec.rb +37 -1
- data/spec/arel/engines/sql/unit/relations/join_spec.rb +53 -11
- data/spec/arel/engines/sql/unit/relations/lock_spec.rb +25 -0
- data/spec/arel/engines/sql/unit/relations/order_spec.rb +52 -4
- data/spec/arel/engines/sql/unit/relations/project_spec.rb +38 -5
- data/spec/arel/engines/sql/unit/relations/skip_spec.rb +10 -1
- data/spec/arel/engines/sql/unit/relations/table_spec.rb +26 -5
- data/spec/arel/engines/sql/unit/relations/take_spec.rb +18 -1
- data/spec/arel/engines/sql/unit/relations/update_spec.rb +47 -1
- data/spec/arel/engines/sql/unit/relations/where_spec.rb +18 -2
- data/spec/connections/oracle_connection.rb +19 -0
- data/spec/schemas/mysql_schema.rb +2 -1
- data/spec/schemas/oracle_schema.rb +20 -0
- data/spec/schemas/postgresql_schema.rb +2 -1
- data/spec/schemas/sqlite3_schema.rb +2 -1
- data/spec/spec_helper.rb +16 -7
- 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`
|
20
|
+
INNER JOIN `users` `users_2`
|
21
21
|
ON `users`.`id` = `users_2`.`id`
|
22
22
|
})
|
23
23
|
end
|
24
24
|
|
25
|
-
|
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"
|
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`
|
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
|
-
|
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"
|
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`
|
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
|
-
|
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"
|
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`
|
136
|
+
INNER JOIN `users` `users_2`
|
110
137
|
ON `users`.`id` = `users_2`.`id`
|
111
|
-
INNER JOIN `users`
|
138
|
+
INNER JOIN `users` `users_3`
|
112
139
|
ON `users_2`.`id` = `users_3`.`id`
|
113
140
|
})
|
114
141
|
end
|
115
142
|
|
116
|
-
|
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"
|
158
|
+
INNER JOIN "users" "users_2"
|
121
159
|
ON "users"."id" = "users_2"."id"
|
122
|
-
INNER JOIN "users"
|
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`
|
178
|
+
INNER JOIN `users` `users_2`
|
141
179
|
ON `users`.`id` = `users_2`.`id`
|
142
|
-
INNER JOIN `users`
|
180
|
+
INNER JOIN `users` `users_3`
|
143
181
|
ON `users_2`.`id` = `users_3`.`id`
|
144
182
|
})
|
145
183
|
end
|
146
184
|
|
147
|
-
|
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"
|
200
|
+
INNER JOIN "users" "users_2"
|
152
201
|
ON "users"."id" = "users_2"."id"
|
153
|
-
INNER JOIN "users"
|
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)
|
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
|
-
|
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)
|
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`)
|
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
|
-
|
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")
|
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`)
|
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
|
-
|
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")
|
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`)
|
99
|
-
INNER JOIN (SELECT `photos`.`user_id`, COUNT(`photos`.`id`) AS `cnt` FROM `photos` GROUP BY `photos`.`user_id`)
|
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
|
-
|
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")
|
108
|
-
INNER JOIN (SELECT "photos"."user_id", COUNT("photos"."id") AS "cnt" FROM "photos" GROUP BY "photos"."user_id")
|
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`)
|
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
|
-
|
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")
|
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`)
|
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
|
-
|
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")
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|