composite_primary_keys 8.1.1 → 8.1.2
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.
- checksums.yaml +4 -4
- data/History.rdoc +4 -1
- data/lib/composite_primary_keys.rb +5 -1
- data/lib/composite_primary_keys/arel/visitors/to_sql.rb +24 -0
- data/lib/composite_primary_keys/associations/association_scope.rb +32 -58
- data/lib/composite_primary_keys/associations/join_dependency/join_association.rb +22 -22
- data/lib/composite_primary_keys/associations/preloader/association.rb +12 -6
- data/lib/composite_primary_keys/associations/preloader/belongs_to.rb +19 -19
- data/lib/composite_primary_keys/attribute_methods/primary_key.rb +1 -2
- data/lib/composite_primary_keys/attribute_methods/read.rb +2 -2
- data/lib/composite_primary_keys/attribute_methods/write.rb +1 -1
- data/lib/composite_primary_keys/composite_predicates.rb +55 -50
- data/lib/composite_primary_keys/composite_relation.rb +48 -48
- data/lib/composite_primary_keys/connection_adapters/abstract/connection_specification_changes.rb +2 -2
- data/lib/composite_primary_keys/connection_adapters/postgresql_adapter.rb +19 -46
- data/lib/composite_primary_keys/connection_adapters/sqlserver_adapter.rb +8 -4
- data/lib/composite_primary_keys/fixtures.rb +26 -22
- data/lib/composite_primary_keys/locking/optimistic.rb +54 -55
- data/lib/composite_primary_keys/relation.rb +15 -8
- data/lib/composite_primary_keys/relation/batches.rb +23 -19
- data/lib/composite_primary_keys/relation/calculations.rb +4 -2
- data/lib/composite_primary_keys/relation/finder_methods.rb +33 -27
- data/lib/composite_primary_keys/relation/predicate_builder.rb +18 -3
- data/lib/composite_primary_keys/relation/query_methods.rb +41 -41
- data/lib/composite_primary_keys/sanitization.rb +7 -5
- data/lib/composite_primary_keys/validations/uniqueness.rb +20 -16
- data/lib/composite_primary_keys/version.rb +1 -1
- data/tasks/databases/oracle.rake +27 -25
- data/tasks/databases/oracle_enhanced.rake +27 -0
- data/test/connections/databases.ci.yml +15 -15
- data/test/connections/native_oracle/connection.rb +11 -11
- data/test/connections/native_oracle_enhanced/connection.rb +16 -16
- data/test/fixtures/comment.rb +7 -7
- data/test/fixtures/db_definitions/db2-create-tables.sql +126 -126
- data/test/fixtures/db_definitions/db2-drop-tables.sql +18 -18
- data/test/fixtures/db_definitions/oracle.drop.sql +48 -45
- data/test/fixtures/db_definitions/oracle.sql +236 -223
- data/test/fixtures/dorm.rb +2 -2
- data/test/fixtures/membership.rb +6 -6
- data/test/fixtures/membership_statuses.yml +16 -16
- data/test/fixtures/memberships.yml +10 -10
- data/test/fixtures/product_tariffs.yml +14 -14
- data/test/fixtures/reference_code.rb +7 -7
- data/test/fixtures/restaurants_suburb.rb +2 -2
- data/test/fixtures/suburb.rb +5 -5
- data/test/fixtures/topic.rb +5 -5
- data/test/fixtures/topic_source.rb +6 -6
- data/test/fixtures/topic_sources.yml +3 -3
- data/test/fixtures/topics.yml +8 -8
- data/test/fixtures/users.yml +10 -10
- data/test/test_attribute_methods.rb +63 -63
- data/test/test_calculations.rb +42 -37
- data/test/test_callbacks.rb +99 -99
- data/test/test_delete.rb +28 -21
- data/test/test_delete_all.rb +5 -4
- data/test/test_dumpable.rb +15 -15
- data/test/test_nested_attributes.rb +124 -124
- data/test/test_optimistic.rb +18 -18
- data/test/test_polymorphic.rb +1 -1
- data/test/test_predicates.rb +40 -40
- data/test/test_santiago.rb +23 -23
- data/test/test_suite.rb +34 -34
- data/test/test_touch.rb +23 -23
- data/test/test_update.rb +71 -71
- metadata +9 -8
- data/lib/composite_primary_keys/model_schema.rb +0 -15
@@ -21,7 +21,7 @@ module CompositePrimaryKeys
|
|
21
21
|
column_alias = column_name
|
22
22
|
|
23
23
|
bind_values = nil
|
24
|
-
|
24
|
+
|
25
25
|
# CPK
|
26
26
|
# if operation == "count" && (relation.limit_value || relation.offset_value)
|
27
27
|
if operation == "count"
|
@@ -36,6 +36,7 @@ module CompositePrimaryKeys
|
|
36
36
|
select_value = operation_over_aggregate_column(column, operation, distinct)
|
37
37
|
|
38
38
|
column_alias = select_value.alias
|
39
|
+
column_alias ||= @klass.connection.column_name_for_operation(operation, select_value)
|
39
40
|
relation.select_values = [select_value]
|
40
41
|
|
41
42
|
query_builder = relation.arel
|
@@ -69,6 +70,7 @@ module CompositePrimaryKeys
|
|
69
70
|
subquery = relation.arel.as(subquery_alias)
|
70
71
|
|
71
72
|
sm = Arel::SelectManager.new relation.engine
|
73
|
+
sm.bind_values = relation.arel.bind_values
|
72
74
|
# CPK
|
73
75
|
# select_value = operation_over_aggregate_column(column_alias, 'count', distinct)
|
74
76
|
select_value = operation_over_aggregate_column(Arel.sql("*"), 'count', false)
|
@@ -76,4 +78,4 @@ module CompositePrimaryKeys
|
|
76
78
|
end
|
77
79
|
end
|
78
80
|
end
|
79
|
-
end
|
81
|
+
end
|
@@ -11,7 +11,7 @@ module CompositePrimaryKeys
|
|
11
11
|
if relation.limit_value
|
12
12
|
limited_ids = limited_ids_for(relation)
|
13
13
|
# CPK
|
14
|
-
#limited_ids.empty? ? relation.none! : relation.where!(table[primary_key].in(limited_ids))
|
14
|
+
# limited_ids.empty? ? relation.none! : relation.where!(table[primary_key].in(limited_ids))
|
15
15
|
limited_ids.empty? ? relation.none! : relation.where!(cpk_in_predicate(table, self.primary_keys, limited_ids))
|
16
16
|
end
|
17
17
|
relation.except(:limit, :offset)
|
@@ -20,16 +20,17 @@ module CompositePrimaryKeys
|
|
20
20
|
|
21
21
|
def limited_ids_for(relation)
|
22
22
|
# CPK
|
23
|
-
#values = @klass.connection.columns_for_distinct(
|
24
|
-
#
|
23
|
+
# values = @klass.connection.columns_for_distinct(
|
24
|
+
# "#{quoted_table_name}.#{quoted_primary_key}", relation.order_values)
|
25
25
|
columns = @klass.primary_keys.map do |key|
|
26
26
|
"#{quoted_table_name}.#{connection.quote_column_name(key)}"
|
27
27
|
end
|
28
28
|
values = @klass.connection.columns_for_distinct(columns, relation.order_values)
|
29
29
|
|
30
30
|
relation = relation.except(:select).select(values).distinct!
|
31
|
+
arel = relation.arel
|
31
32
|
|
32
|
-
id_rows = @klass.connection.select_all(
|
33
|
+
id_rows = @klass.connection.select_all(arel, 'SQL', arel.bind_values + relation.bind_values)
|
33
34
|
|
34
35
|
# CPK
|
35
36
|
#id_rows.map {|row| row[primary_key]}
|
@@ -37,12 +38,14 @@ module CompositePrimaryKeys
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def exists?(conditions = :none)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
if ::ActiveRecord::Base === conditions
|
42
|
+
conditions = conditions.id
|
43
|
+
::ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
44
|
+
You are passing an instance of ActiveRecord::Base to `exists?`.
|
45
|
+
Please pass the id of the object by calling `.id`
|
46
|
+
MSG
|
47
|
+
end
|
44
48
|
|
45
|
-
conditions = conditions.id if ::ActiveRecord::Base === conditions
|
46
49
|
return false if !conditions
|
47
50
|
|
48
51
|
relation = apply_join_dependency(self, construct_join_dependency)
|
@@ -50,14 +53,14 @@ module CompositePrimaryKeys
|
|
50
53
|
|
51
54
|
relation = relation.except(:select, :order).select(::ActiveRecord::FinderMethods::ONE_AS_ONE).limit(1)
|
52
55
|
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#end
|
60
|
-
|
56
|
+
# case conditions
|
57
|
+
# when Array, Hash
|
58
|
+
# relation = relation.where(conditions)
|
59
|
+
# else
|
60
|
+
# unless conditions == :none
|
61
|
+
# relation = relation.where(primary_key => conditions)
|
62
|
+
# end
|
63
|
+
# end
|
61
64
|
case conditions
|
62
65
|
when CompositePrimaryKeys::CompositeKeys
|
63
66
|
relation = relation.where(cpk_id_predicate(table, primary_key, conditions))
|
@@ -80,14 +83,14 @@ module CompositePrimaryKeys
|
|
80
83
|
raise UnknownPrimaryKey.new(@klass) if primary_key.nil?
|
81
84
|
|
82
85
|
# CPK
|
83
|
-
#expects_array = ids.first.kind_of?(Array)
|
86
|
+
# expects_array = ids.first.kind_of?(Array)
|
84
87
|
ids = CompositePrimaryKeys.normalize(ids)
|
85
88
|
expects_array = ids.flatten != ids.flatten(1)
|
86
89
|
|
87
90
|
return ids.first if expects_array && ids.first.empty?
|
88
91
|
|
89
92
|
# CPK
|
90
|
-
#ids = ids.flatten.compact.uniq
|
93
|
+
# ids = ids.flatten.compact.uniq
|
91
94
|
ids = expects_array ? ids.first : ids
|
92
95
|
|
93
96
|
case ids.size
|
@@ -105,24 +108,27 @@ module CompositePrimaryKeys
|
|
105
108
|
|
106
109
|
def find_one(id)
|
107
110
|
# CPK
|
108
|
-
#
|
109
|
-
|
111
|
+
# if ActiveRecord::Base === id
|
112
|
+
if ::ActiveRecord::Base === id
|
113
|
+
id = id.id
|
114
|
+
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
115
|
+
You are passing an instance of ActiveRecord::Base to `find`.
|
116
|
+
Please pass the id of the object by calling `.id`
|
117
|
+
MSG
|
118
|
+
end
|
110
119
|
|
111
|
-
# CPK
|
112
|
-
#column = columns_hash[primary_key]
|
113
|
-
#substitute = connection.substitute_at(column, bind_values.length)
|
114
|
-
#relation = where(table[primary_key].eq(substitute))
|
115
|
-
#relation.bind_values += [[column, id]]
|
116
|
-
#record = relation.take
|
117
120
|
relation = self
|
118
121
|
values = primary_keys.each_with_index.map do |primary_key, i|
|
119
122
|
column = columns_hash[primary_key]
|
120
123
|
relation.bind_values += [[column, id[i]]]
|
121
124
|
connection.substitute_at(column, bind_values.length - 1)
|
122
125
|
end
|
126
|
+
|
123
127
|
relation = relation.where(cpk_id_predicate(table, primary_keys, values))
|
124
128
|
record = relation.take
|
129
|
+
|
125
130
|
raise_record_not_found_exception!(id, 0, 1) unless record
|
131
|
+
|
126
132
|
record
|
127
133
|
end
|
128
134
|
|
@@ -2,12 +2,27 @@ module ActiveRecord
|
|
2
2
|
class PredicateBuilder
|
3
3
|
def self.expand(klass, table, column, value)
|
4
4
|
queries = []
|
5
|
-
|
6
|
-
|
5
|
+
|
6
|
+
# Find the foreign key when using queries such as:
|
7
|
+
# Post.where(author: author)
|
8
|
+
#
|
9
|
+
# For polymorphic relationships, find the foreign key and type:
|
10
|
+
# PriceEstimate.where(estimate_of: treasure)
|
11
|
+
if klass && reflection = klass._reflect_on_association(column)
|
12
|
+
base_class = polymorphic_base_class_from_value(value)
|
13
|
+
|
14
|
+
if reflection.polymorphic? && base_class
|
7
15
|
queries << build(table[reflection.foreign_type], base_class)
|
8
16
|
end
|
9
17
|
|
10
18
|
column = reflection.foreign_key
|
19
|
+
|
20
|
+
# CPK
|
21
|
+
# if base_class
|
22
|
+
if base_class && !(Base === value && value.composite?)
|
23
|
+
primary_key = reflection.association_primary_key(base_class)
|
24
|
+
value = convert_value_to_association_ids(value, primary_key)
|
25
|
+
end
|
11
26
|
end
|
12
27
|
|
13
28
|
#CPK
|
@@ -19,4 +34,4 @@ module ActiveRecord
|
|
19
34
|
queries
|
20
35
|
end
|
21
36
|
end
|
22
|
-
end
|
37
|
+
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
module CompositePrimaryKeys::ActiveRecord::QueryMethods
|
2
|
-
|
3
|
-
def reverse_sql_order(order_query)
|
4
|
-
# CPK
|
5
|
-
# order_query = ["#{quoted_table_name}.#{quoted_primary_key} ASC"] if order_query.empty?
|
6
|
-
|
7
|
-
# break apart CPKs
|
8
|
-
order_query = primary_key.map do |key|
|
9
|
-
"#{quoted_table_name}.#{connection.quote_column_name(key)} ASC"
|
10
|
-
end if order_query.empty?
|
11
|
-
|
12
|
-
order_query.map do |o|
|
13
|
-
case o
|
14
|
-
when Arel::Nodes::Ordering
|
15
|
-
o.reverse
|
16
|
-
when String, Symbol
|
17
|
-
o.to_s.split(',').collect do |s|
|
18
|
-
s.strip!
|
19
|
-
s.gsub!(/\sasc\Z/i, ' DESC') || s.gsub!(/\sdesc\Z/i, ' ASC') || s.concat(' DESC')
|
20
|
-
end
|
21
|
-
else
|
22
|
-
o
|
23
|
-
end
|
24
|
-
end.flatten
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
def order(*args)
|
29
|
-
args.map! do |arg|
|
30
|
-
if arg.is_a?(Arel::Nodes::Ordering) && arg.expr.name.is_a?(Array)
|
31
|
-
arg = arg.expr.name.map do |key|
|
32
|
-
cloned_node = arg.clone
|
33
|
-
cloned_node.expr.name = key
|
34
|
-
cloned_node
|
35
|
-
end
|
36
|
-
end
|
37
|
-
arg
|
38
|
-
end if composite?
|
39
|
-
super(*args)
|
40
|
-
end
|
41
|
-
end
|
1
|
+
module CompositePrimaryKeys::ActiveRecord::QueryMethods
|
2
|
+
|
3
|
+
def reverse_sql_order(order_query)
|
4
|
+
# CPK
|
5
|
+
# order_query = ["#{quoted_table_name}.#{quoted_primary_key} ASC"] if order_query.empty?
|
6
|
+
|
7
|
+
# break apart CPKs
|
8
|
+
order_query = primary_key.map do |key|
|
9
|
+
"#{quoted_table_name}.#{connection.quote_column_name(key)} ASC"
|
10
|
+
end if order_query.empty?
|
11
|
+
|
12
|
+
order_query.map do |o|
|
13
|
+
case o
|
14
|
+
when Arel::Nodes::Ordering
|
15
|
+
o.reverse
|
16
|
+
when String, Symbol
|
17
|
+
o.to_s.split(',').collect do |s|
|
18
|
+
s.strip!
|
19
|
+
s.gsub!(/\sasc\Z/i, ' DESC') || s.gsub!(/\sdesc\Z/i, ' ASC') || s.concat(' DESC')
|
20
|
+
end
|
21
|
+
else
|
22
|
+
o
|
23
|
+
end
|
24
|
+
end.flatten
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def order(*args)
|
29
|
+
args.map! do |arg|
|
30
|
+
if arg.is_a?(Arel::Nodes::Ordering) && arg.expr.name.is_a?(Array)
|
31
|
+
arg = arg.expr.name.map do |key|
|
32
|
+
cloned_node = arg.clone
|
33
|
+
cloned_node.expr.name = key
|
34
|
+
cloned_node
|
35
|
+
end
|
36
|
+
end
|
37
|
+
arg
|
38
|
+
end if composite?
|
39
|
+
super(*args)
|
40
|
+
end
|
41
|
+
end
|
@@ -16,6 +16,8 @@ module ActiveRecord
|
|
16
16
|
def expand_hash_conditions_for_aggregates(attrs)
|
17
17
|
expanded_attrs = {}
|
18
18
|
attrs.each do |attr, value|
|
19
|
+
# CPK
|
20
|
+
# if aggregation = reflect_on_aggregation(attr.to_sym)
|
19
21
|
if attr.is_a?(CompositePrimaryKeys::CompositeKeys)
|
20
22
|
attr.each_with_index do |key,i|
|
21
23
|
expanded_attrs[key] = value.respond_to?(:flatten) ? value.flatten[i] : value
|
@@ -38,13 +40,13 @@ module ActiveRecord
|
|
38
40
|
|
39
41
|
def quoted_id
|
40
42
|
# CPK
|
41
|
-
#quote_value(id, column_for_attribute(self.class.primary_key))
|
43
|
+
# self.class.quote_value(id, column_for_attribute(self.class.primary_key))
|
42
44
|
if self.composite?
|
43
|
-
[self.class.primary_keys, ids].
|
44
|
-
|
45
|
-
|
45
|
+
[self.class.primary_keys, ids].transpose.map { |attr_name,id|
|
46
|
+
self.class.quote_value(id, column_for_attribute(attr_name))
|
47
|
+
}
|
46
48
|
else
|
47
|
-
quote_value(id, column_for_attribute(self.class.primary_key))
|
49
|
+
self.class.quote_value(id, column_for_attribute(self.class.primary_key))
|
48
50
|
end
|
49
51
|
end
|
50
52
|
end
|
@@ -6,24 +6,28 @@ module ActiveRecord
|
|
6
6
|
table = finder_class.arel_table
|
7
7
|
value = map_enum_attribute(finder_class, attribute, value)
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
begin
|
10
|
+
relation = build_relation(finder_class, table, attribute, value)
|
11
|
+
# CPK
|
12
|
+
# relation = relation.and(table[finder_class.primary_key.to_sym].not_eq(record.id)) if record.persisted?
|
13
|
+
if record.persisted?
|
14
|
+
not_eq_conditions = Array(finder_class.primary_key).zip(Array(record.send(:id))).map do |name, value|
|
15
|
+
table[name.to_sym].not_eq(value)
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
condition = not_eq_conditions.shift
|
19
|
+
not_eq_conditions.each do |not_eq_condition|
|
20
|
+
condition = condition.or(not_eq_condition)
|
21
|
+
end
|
22
|
+
relation = relation.and(condition)
|
20
23
|
end
|
21
|
-
|
24
|
+
# End CPK
|
25
|
+
relation = scope_relation(record, table, relation)
|
26
|
+
relation = finder_class.unscoped.where(relation)
|
27
|
+
relation = relation.merge(options[:conditions]) if options[:conditions]
|
28
|
+
rescue RangeError
|
29
|
+
relation = finder_class.none
|
22
30
|
end
|
23
|
-
|
24
|
-
relation = scope_relation(record, table, relation)
|
25
|
-
relation = finder_class.unscoped.where(relation)
|
26
|
-
relation = relation.merge(options[:conditions]) if options[:conditions]
|
27
31
|
|
28
32
|
if relation.exists?
|
29
33
|
error_options = options.except(:case_sensitive, :scope, :conditions)
|
@@ -34,4 +38,4 @@ module ActiveRecord
|
|
34
38
|
end
|
35
39
|
end
|
36
40
|
end
|
37
|
-
end
|
41
|
+
end
|
data/tasks/databases/oracle.rake
CHANGED
@@ -1,25 +1,27 @@
|
|
1
|
-
require File.join(PROJECT_ROOT, 'lib', 'composite_primary_keys')
|
2
|
-
require File.join(PROJECT_ROOT, 'test', 'connections', 'connection_spec')
|
3
|
-
|
4
|
-
namespace :oracle do
|
5
|
-
desc 'Build the Oracle test database'
|
6
|
-
task :build_database => :load_connection do
|
7
|
-
options_str = connection_string
|
8
|
-
|
9
|
-
|
10
|
-
sh %( sqlplus #{options_str} < #{
|
11
|
-
end
|
12
|
-
|
13
|
-
desc 'Drop the Oracle test database'
|
14
|
-
task :drop_database => :load_connection do
|
15
|
-
options_str = connection_string
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
task :
|
23
|
-
|
24
|
-
|
25
|
-
|
1
|
+
require File.join(PROJECT_ROOT, 'lib', 'composite_primary_keys')
|
2
|
+
require File.join(PROJECT_ROOT, 'test', 'connections', 'connection_spec')
|
3
|
+
|
4
|
+
namespace :oracle do
|
5
|
+
desc 'Build the Oracle test database'
|
6
|
+
task :build_database => :load_connection do
|
7
|
+
options_str = connection_string
|
8
|
+
|
9
|
+
sql = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.sql')
|
10
|
+
sh %( sqlplus #{options_str} < #{sql} )
|
11
|
+
end
|
12
|
+
|
13
|
+
desc 'Drop the Oracle test database'
|
14
|
+
task :drop_database => :load_connection do
|
15
|
+
options_str = connection_string
|
16
|
+
|
17
|
+
sql = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.drop.sql')
|
18
|
+
sh %( sqlplus #{options_str} < #{sql} )
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'Rebuild the Oracle test database'
|
22
|
+
task :rebuild_database => [:drop_database, :build_database]
|
23
|
+
|
24
|
+
task :load_connection do
|
25
|
+
require File.join(PROJECT_ROOT, "test", "connections", "native_oracle", "connection")
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.join(PROJECT_ROOT, 'lib', 'composite_primary_keys')
|
2
|
+
require File.join(PROJECT_ROOT, 'test', 'connections', 'connection_spec')
|
3
|
+
|
4
|
+
namespace :oracle_enhanced do
|
5
|
+
desc 'Build the Oracle test database'
|
6
|
+
task :build_database => :load_connection do
|
7
|
+
options_str = connection_string
|
8
|
+
|
9
|
+
sql = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.sql')
|
10
|
+
sh %( sqlplus #{options_str} < #{sql} )
|
11
|
+
end
|
12
|
+
|
13
|
+
desc 'Drop the Oracle test database'
|
14
|
+
task :drop_database => :load_connection do
|
15
|
+
options_str = connection_string
|
16
|
+
|
17
|
+
sql = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.drop.sql')
|
18
|
+
sh %( sqlplus #{options_str} < #{sql} )
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'Rebuild the Oracle test database'
|
22
|
+
task :rebuild_database => [:drop_database, :build_database]
|
23
|
+
|
24
|
+
task :load_connection do
|
25
|
+
require File.join(PROJECT_ROOT, "test", "connections", "native_oracle_enhanced", "connection")
|
26
|
+
end
|
27
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
mysql:
|
2
|
-
adapter: mysql2
|
3
|
-
username: travis
|
4
|
-
password: ""
|
5
|
-
database: composite_primary_keys_unittest
|
6
|
-
|
7
|
-
sqlite3:
|
8
|
-
adapter: sqlite3
|
9
|
-
database: db/composite_primary_keys_unittest.sqlite
|
10
|
-
|
11
|
-
postgresql:
|
12
|
-
adapter: postgresql
|
13
|
-
database: composite_primary_keys_unittest
|
14
|
-
username: postgres
|
15
|
-
host: localhost
|
1
|
+
mysql:
|
2
|
+
adapter: mysql2
|
3
|
+
username: travis
|
4
|
+
password: ""
|
5
|
+
database: composite_primary_keys_unittest
|
6
|
+
|
7
|
+
sqlite3:
|
8
|
+
adapter: sqlite3
|
9
|
+
database: db/composite_primary_keys_unittest.sqlite
|
10
|
+
|
11
|
+
postgresql:
|
12
|
+
adapter: postgresql
|
13
|
+
database: composite_primary_keys_unittest
|
14
|
+
username: postgres
|
15
|
+
host: localhost
|