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
@@ -0,0 +1,20 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
suppress_messages do
|
3
|
+
create_table :users, :primary_key_trigger => true, :force => true do |t|
|
4
|
+
t.string :name, :limit => 255, :null => false
|
5
|
+
end
|
6
|
+
|
7
|
+
create_table :photos, :primary_key_trigger => true, :force => true do |t|
|
8
|
+
t.integer :user_id
|
9
|
+
t.integer :camera_id
|
10
|
+
end
|
11
|
+
|
12
|
+
create_table :developers, :primary_key_trigger => true, :force => true do |t|
|
13
|
+
t.string :name, :limit => 255, :null => false
|
14
|
+
t.integer :salary
|
15
|
+
t.string :department, :limit => 255, :null => false
|
16
|
+
t.timestamp :created_at, :null => false
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,18 +12,21 @@ require 'arel'
|
|
12
12
|
end
|
13
13
|
|
14
14
|
module AdapterGuards
|
15
|
-
def adapter_is(
|
16
|
-
|
17
|
-
|
15
|
+
def adapter_is(*names)
|
16
|
+
names = names.map(&:to_s)
|
17
|
+
names.each{|name| verify_adapter_name(name)}
|
18
|
+
yield if names.include? adapter_name
|
18
19
|
end
|
19
20
|
|
20
|
-
def adapter_is_not(
|
21
|
-
|
22
|
-
|
21
|
+
def adapter_is_not(*names)
|
22
|
+
names = names.map(&:to_s)
|
23
|
+
names.each{|name| verify_adapter_name(name)}
|
24
|
+
yield unless names.include? adapter_name
|
23
25
|
end
|
24
26
|
|
25
27
|
def adapter_name
|
26
28
|
name = ActiveRecord::Base.configurations["unit"][:adapter]
|
29
|
+
name = 'oracle' if name == 'oracle_enhanced'
|
27
30
|
verify_adapter_name(name)
|
28
31
|
name
|
29
32
|
end
|
@@ -33,7 +36,7 @@ module AdapterGuards
|
|
33
36
|
end
|
34
37
|
|
35
38
|
def valid_adapters
|
36
|
-
%w[mysql postgresql sqlite3]
|
39
|
+
%w[mysql postgresql sqlite3 oracle]
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
@@ -53,3 +56,9 @@ Spec::Runner.configure do |config|
|
|
53
56
|
Arel::Table.engine = Arel::Sql::Engine.new(ActiveRecord::Base)
|
54
57
|
end
|
55
58
|
end
|
59
|
+
|
60
|
+
# load corresponding adapter using ADAPTER environment variable when running single *_spec.rb file
|
61
|
+
if adapter = ENV['ADAPTER']
|
62
|
+
require "#{dir}/connections/#{adapter}_connection.rb"
|
63
|
+
require "#{dir}/schemas/#{adapter}_schema.rb"
|
64
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Bryan Helmkamp
|
@@ -11,19 +16,24 @@ autorequire:
|
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
18
|
|
14
|
-
date: 2010-
|
19
|
+
date: 2010-03-10 00:00:00 -03:00
|
15
20
|
default_executable:
|
16
21
|
dependencies:
|
17
22
|
- !ruby/object:Gem::Dependency
|
18
23
|
name: activesupport
|
19
|
-
|
20
|
-
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
26
|
requirements:
|
23
27
|
- - ">="
|
24
28
|
- !ruby/object:Gem::Version
|
29
|
+
segments:
|
30
|
+
- 3
|
31
|
+
- 0
|
32
|
+
- 0
|
33
|
+
- beta
|
25
34
|
version: 3.0.0.beta
|
26
|
-
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
27
37
|
description: |-
|
28
38
|
Arel is a Relational Algebra for Ruby. It 1) simplifies the generation complex
|
29
39
|
of SQL queries and it 2) adapts to various RDBMS systems. It is intended to be
|
@@ -90,6 +100,11 @@ files:
|
|
90
100
|
- lib/arel/engines/memory/relations/writes.rb
|
91
101
|
- lib/arel/engines/sql.rb
|
92
102
|
- lib/arel/engines/sql/christener.rb
|
103
|
+
- lib/arel/engines/sql/compilers/ibm_db_compiler.rb
|
104
|
+
- lib/arel/engines/sql/compilers/mysql_compiler.rb
|
105
|
+
- lib/arel/engines/sql/compilers/oracle_compiler.rb
|
106
|
+
- lib/arel/engines/sql/compilers/postgresql_compiler.rb
|
107
|
+
- lib/arel/engines/sql/compilers/sqlite_compiler.rb
|
93
108
|
- lib/arel/engines/sql/core_extensions.rb
|
94
109
|
- lib/arel/engines/sql/core_extensions/array.rb
|
95
110
|
- lib/arel/engines/sql/core_extensions/nil_class.rb
|
@@ -100,6 +115,7 @@ files:
|
|
100
115
|
- lib/arel/engines/sql/predicates.rb
|
101
116
|
- lib/arel/engines/sql/primitives.rb
|
102
117
|
- lib/arel/engines/sql/relations.rb
|
118
|
+
- lib/arel/engines/sql/relations/compiler.rb
|
103
119
|
- lib/arel/engines/sql/relations/operations/alias.rb
|
104
120
|
- lib/arel/engines/sql/relations/operations/join.rb
|
105
121
|
- lib/arel/engines/sql/relations/relation.rb
|
@@ -167,6 +183,7 @@ files:
|
|
167
183
|
- spec/arel/engines/sql/unit/relations/update_spec.rb
|
168
184
|
- spec/arel/engines/sql/unit/relations/where_spec.rb
|
169
185
|
- spec/connections/mysql_connection.rb
|
186
|
+
- spec/connections/oracle_connection.rb
|
170
187
|
- spec/connections/postgresql_connection.rb
|
171
188
|
- spec/connections/sqlite3_connection.rb
|
172
189
|
- spec/doubles/hash.rb
|
@@ -174,6 +191,7 @@ files:
|
|
174
191
|
- spec/matchers/disambiguate_attributes.rb
|
175
192
|
- spec/matchers/hash_the_same_as.rb
|
176
193
|
- spec/schemas/mysql_schema.rb
|
194
|
+
- spec/schemas/oracle_schema.rb
|
177
195
|
- spec/schemas/postgresql_schema.rb
|
178
196
|
- spec/schemas/sqlite3_schema.rb
|
179
197
|
- spec/spec.opts
|
@@ -191,18 +209,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
191
209
|
requirements:
|
192
210
|
- - ">="
|
193
211
|
- !ruby/object:Gem::Version
|
212
|
+
segments:
|
213
|
+
- 0
|
194
214
|
version: "0"
|
195
|
-
version:
|
196
215
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
216
|
requirements:
|
198
217
|
- - ">="
|
199
218
|
- !ruby/object:Gem::Version
|
219
|
+
segments:
|
220
|
+
- 0
|
200
221
|
version: "0"
|
201
|
-
version:
|
202
222
|
requirements: []
|
203
223
|
|
204
224
|
rubyforge_project: arel
|
205
|
-
rubygems_version: 1.3.
|
225
|
+
rubygems_version: 1.3.6
|
206
226
|
signing_key:
|
207
227
|
specification_version: 3
|
208
228
|
summary: Arel is a relational algebra engine for Ruby
|
@@ -264,6 +284,7 @@ test_files:
|
|
264
284
|
- spec/arel/engines/sql/unit/relations/update_spec.rb
|
265
285
|
- spec/arel/engines/sql/unit/relations/where_spec.rb
|
266
286
|
- spec/connections/mysql_connection.rb
|
287
|
+
- spec/connections/oracle_connection.rb
|
267
288
|
- spec/connections/postgresql_connection.rb
|
268
289
|
- spec/connections/sqlite3_connection.rb
|
269
290
|
- spec/doubles/hash.rb
|
@@ -271,6 +292,7 @@ test_files:
|
|
271
292
|
- spec/matchers/disambiguate_attributes.rb
|
272
293
|
- spec/matchers/hash_the_same_as.rb
|
273
294
|
- spec/schemas/mysql_schema.rb
|
295
|
+
- spec/schemas/oracle_schema.rb
|
274
296
|
- spec/schemas/postgresql_schema.rb
|
275
297
|
- spec/schemas/sqlite3_schema.rb
|
276
298
|
- spec/spec_helper.rb
|