arel 0.2.1 → 0.3.0
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.
- 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
|