activerecord-oracle_enhanced-adapter 1.7.0.beta1 → 1.7.0.beta2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f98878e23459a54a04b7fa57b79ff3ee30e50f78
4
- data.tar.gz: ebecb63118fb612c6b21c5b6038e6f82c05e9bfd
3
+ metadata.gz: 7bfe3790c7fd04db5135ae542ed043d6cf3d841c
4
+ data.tar.gz: b9a99140af3273a2106d29f2c01c24fe7d247913
5
5
  SHA512:
6
- metadata.gz: 539c8e0b3e594c6cde1704bbddbefb7dc92208d1bcbf053fd8a6eff37322b0e7c7acc899f9a9c9d7581ff4b06d9d2c7ddd7dc6cdb85db96af04f027331445646
7
- data.tar.gz: 5257dcdc1df87458889098bec9eada6b1105f6158e7e47a2600ff35a362ecb6f40ad2a37a438a83e1a99cb7364fb4980fe96cd221ac0688fc86f91b4baa07ef4
6
+ metadata.gz: e741ac73131eb73c8a1156fd90927db6777bef7306fced5df9bb6e58860057138077f91bc08b956e6ac924c50edfcd866e7ff3b05487ef9f4849e53b8c8a0ec3
7
+ data.tar.gz: 9b744df558be9c9dab4abca0127791d0792d50c405bbdafe0c6013528df8db20c491cdd33a739d53f23dfcbb21c2f10a671ba90fd26e07f4f3dfc1780d93934d
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ group :development do
5
5
  gem 'rdoc'
6
6
  gem 'rake'
7
7
 
8
- gem 'activerecord', github: 'rails/rails', branch: 'master'
8
+ gem 'activerecord', github: 'rails/rails', branch: '5-0-stable'
9
9
  gem 'rack', github: 'rack/rack', branch: 'master'
10
10
  gem 'arel', github: 'rails/arel', branch: 'master'
11
11
 
data/README.md CHANGED
@@ -18,7 +18,7 @@ Oracle enhanced adapter Rails 5 support is still in beta release, so use with ca
18
18
 
19
19
  ```ruby
20
20
  # Use oracle as the database for Active Record
21
- gem 'activerecord-oracle_enhanced-adapter', '=> 1.7.0.beta1'
21
+ gem 'activerecord-oracle_enhanced-adapter', '~> 1.7.0.beta1'
22
22
  ```
23
23
 
24
24
  ### Rails 4.2
@@ -258,14 +258,17 @@ class Employee < ActiveRecord::Base
258
258
  # specify sequence name
259
259
  self.sequence_name = "hr.hr_employee_s"
260
260
 
261
- # set which DATE columns should be converted to Ruby Date
262
- set_date_columns :hired_on, :birth_date_on
261
+ # set which DATE columns should be converted to Ruby Date using ActiveRecord Attribute API
262
+ # Starting from Oracle enhanced adapter 1.7 Oracle `DATE` columns are mapped to Ruby `Date` by default.
263
+ attribute :hired_on, :date
264
+ attribute :birth_date_on, :date
263
265
 
264
- # set which DATE columns should be converted to Ruby Time
265
- set_datetime_columns :last_login_time
266
+ # set which DATE columns should be converted to Ruby Time using ActiveRecord Attribute API
267
+ attribute :last_login_time, :datetime
266
268
 
267
- # set which VARCHAR2 columns should be converted to true and false
268
- set_boolean_columns :manager, :active
269
+ # set which VARCHAR2 columns should be converted to true and false using ActiveRecord Attribute API
270
+ attribute :manager, :boolean
271
+ attribute :active, :boolean
269
272
 
270
273
  # set which columns should be ignored in ActiveRecord
271
274
  ignore_table_columns :attribute1, :attribute2
@@ -278,6 +281,35 @@ You can also access remote tables over database link using
278
281
  self.table_name "hr_employees@db_link"
279
282
  ```
280
283
 
284
+ Examples for Rails 4.x
285
+
286
+ ```ruby
287
+ class Employee < ActiveRecord::Base
288
+ # specify schema and table name
289
+ self.table_name = "hr.hr_employees"
290
+
291
+ # specify primary key name
292
+ self.primary_key = "employee_id"
293
+
294
+ # specify sequence name
295
+ self.sequence_name = "hr.hr_employee_s"
296
+
297
+ # If you're using Rails 4.2 or earlier you can do this
298
+
299
+ # set which DATE columns should be converted to Ruby Date
300
+ set_date_columns :hired_on, :birth_date_on
301
+
302
+ # set which DATE columns should be converted to Ruby Time
303
+ set_datetime_columns :last_login_time
304
+
305
+ # set which VARCHAR2 columns should be converted to true and false
306
+ set_boolean_columns :manager, :active
307
+
308
+ # set which columns should be ignored in ActiveRecord
309
+ ignore_table_columns :attribute1, :attribute2
310
+ end
311
+ ```
312
+
281
313
  Examples for Rails 3.2 and lower version of Rails
282
314
 
283
315
  ```ruby
@@ -429,6 +461,14 @@ Post.contains(:all_text, "aaa within title")
429
461
  Post.contains(:all_text, "bbb within comment_author")
430
462
  ```
431
463
 
464
+ Please note that `index_column` must be a real column in your database and it's value will be overriden every time your `index_column_trigger_on` columns are changed. So, _do not use columns with real data as `index_column`_.
465
+
466
+ Index column can be created as:
467
+
468
+ ```ruby
469
+ add_column :posts, :all_text, :string, limit: 2, comment: 'Service column for context search index'
470
+ ```
471
+
432
472
  ### Oracle virtual columns support
433
473
 
434
474
  Since version R11G1 Oracle database allows adding computed [Virtual Columns](http://www.oracle-base.com/articles/11g/virtual-columns-11gr1.php) to the table.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.0.beta1
1
+ 1.7.0.beta2
@@ -1,11 +1,12 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{activerecord-oracle_enhanced-adapter}
3
- s.version = "1.7.0.beta1"
3
+ s.version = "1.7.0.beta2"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.required_ruby_version = '>= 2.2.2'
6
7
  s.license = 'MIT'
7
8
  s.authors = [%q{Raimonds Simanovskis}]
8
- s.date = %q{2016-07-18}
9
+ s.date = %q{2016-07-22}
9
10
  s.description = %q{Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
10
11
  This adapter is superset of original ActiveRecord Oracle adapter.
11
12
  }
@@ -87,7 +88,7 @@ This adapter is superset of original ActiveRecord Oracle adapter.
87
88
  ]
88
89
  s.add_dependency(%q<rspec>, ["~> 3.3"])
89
90
  s.add_dependency(%q<activerecord>, ["~> 5.0.0"])
90
- s.add_dependency(%q<arel>, ["~> 7.0"])
91
+ s.add_dependency(%q<arel>, ["~> 7.1.0"])
91
92
  s.add_dependency(%q<ruby-plsql>, [">= 0.5.0"])
92
93
  s.add_dependency(%q<ruby-oci8>, [">= 2.2.0"]) if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby'
93
94
  s.license = 'MIT'
@@ -361,7 +361,7 @@ module ActiveRecord
361
361
  @raw_statement.setBigDecimal(position, value)
362
362
  when Java::OracleSql::BLOB
363
363
  @raw_statement.setBlob(position, value)
364
- when ActiveRecord::OracleEnhanced::Type::Text::Data
364
+ when Java::OracleSql::CLOB
365
365
  @raw_statement.setClob(position, value)
366
366
  when ActiveRecord::OracleEnhanced::Type::Raw
367
367
  @raw_statement.setString(position, ActiveRecord::ConnectionAdapters::OracleEnhanced::Quoting.encode_raw(value))
@@ -9,8 +9,9 @@ module ActiveRecord
9
9
  blob.setBytes(1, value.to_s.to_java_bytes)
10
10
  blob
11
11
  when ActiveRecord::OracleEnhanced::Type::Text::Data
12
- #TODO: may need CLOB specific handling
13
- value.to_s
12
+ clob = Java::OracleSql::CLOB.createTemporary(@connection.raw_connection, false, Java::OracleSql::CLOB::DURATION_SESSION)
13
+ clob.setString(1, value.to_s)
14
+ clob
14
15
  when Date, DateTime
15
16
  Java::oracle.sql.DATE.new(value.strftime("%Y-%m-%d %H:%M:%S"))
16
17
  when Time
@@ -1,14 +1,5 @@
1
1
  module ActiveRecord
2
2
  module ConnectionAdapters
3
- #TODO: Overriding `aliased_types` cause another database adapter behavior changes
4
- #It should be addressed by supporting `create_table_definition`
5
- class TableDefinition
6
- private
7
- def aliased_types(name, fallback)
8
- fallback
9
- end
10
- end
11
-
12
3
  module OracleEnhanced
13
4
 
14
5
  class ForeignKeyDefinition < ActiveRecord::ConnectionAdapters::ForeignKeyDefinition
@@ -1070,7 +1070,7 @@ module ActiveRecord
1070
1070
  SQL
1071
1071
 
1072
1072
  warn <<-WARNING.strip_heredoc if pks.count > 1
1073
- WARNING: Rails does not support composite primary key.
1073
+ WARNING: Active Record does not support composite primary key.
1074
1074
 
1075
1075
  #{table_name} has composite primary key. Composite primary key is ignored.
1076
1076
  WARNING
@@ -34,55 +34,6 @@ describe "OracleEnhancedAdapter date type detection based on column names" do
34
34
  @conn.execute "DROP SEQUENCE test_employees_seq"
35
35
  end
36
36
 
37
- xit "should set DATE column type as datetime if emulate_dates_by_column_name is false" do
38
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = false
39
- columns = @conn.columns('test_employees')
40
- column = columns.detect{|c| c.name == "hire_date"}
41
- expect(column.type).to eq(:datetime)
42
- end
43
-
44
- xit "should set DATE column type as date if column name contains '_date_' and emulate_dates_by_column_name is true" do
45
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
46
- columns = @conn.columns('test_employees')
47
- column = columns.detect{|c| c.name == "hire_date"}
48
- expect(column.type).to eq(:date)
49
- end
50
-
51
- xit "should set DATE column type as datetime if column name does not contain '_date_' and emulate_dates_by_column_name is true" do
52
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
53
- columns = @conn.columns('test_employees')
54
- column = columns.detect{|c| c.name == "created_at"}
55
- expect(column.type).to eq(:datetime)
56
- end
57
-
58
- xit "should set DATE column type as datetime if column name contains 'date' as part of other word and emulate_dates_by_column_name is true" do
59
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
60
- columns = @conn.columns('test_employees')
61
- column = columns.detect{|c| c.name == "updated_at"}
62
- expect(column.type).to eq(:datetime)
63
- end
64
-
65
- xit "should return Time value from DATE column if emulate_dates_by_column_name is false" do
66
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = false
67
- columns = @conn.columns('test_employees')
68
- column = columns.detect{|c| c.name == "hire_date"}
69
- expect(@conn.lookup_cast_type_from_column(column).cast(Time.now).class).to eq(Time)
70
- end
71
-
72
- xit "should return Date value from DATE column if column name contains 'date' and emulate_dates_by_column_name is true" do
73
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
74
- columns = @conn.columns('test_employees')
75
- column = columns.detect{|c| c.name == "hire_date"}
76
- expect(@conn.lookup_cast_type_from_column(column).cast(Time.now).class).to eq(Date)
77
- end
78
-
79
- xit "should typecast DateTime value to Date value from DATE column if column name contains 'date' and emulate_dates_by_column_name is true" do
80
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
81
- columns = @conn.columns('test_employees')
82
- column = columns.detect{|c| c.name == "hire_date"}
83
- expect(@conn.lookup_cast_type_from_column(column).cast(DateTime.new(1900,1,1)).class).to eq(Date)
84
- end
85
-
86
37
  describe "/ DATE values from ActiveRecord model" do
87
38
  before(:each) do
88
39
  # ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = false
@@ -162,16 +113,6 @@ describe "OracleEnhancedAdapter date type detection based on column names" do
162
113
  expect(@employee.hire_date.class).to eq(Date)
163
114
  end
164
115
 
165
- xit "should see set_date_columns values in different connection" do
166
- class ::TestEmployee < ActiveRecord::Base
167
- set_date_columns :hire_date
168
- end
169
- # ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = false
170
- # establish other connection
171
- other_conn = ActiveRecord::Base.oracle_enhanced_connection(CONNECTION_PARAMS)
172
- expect(other_conn.get_type_for_column('test_employees', 'hire_date')).to eq(:date)
173
- end
174
-
175
116
  it "should return Time value from DATE column if emulate_dates_by_column_name is true but column is defined as datetime" do
176
117
  class ::TestEmployee < ActiveRecord::Base
177
118
  # set_datetime_columns :hire_date
@@ -237,43 +178,6 @@ describe "OracleEnhancedAdapter integer type detection based on column names" do
237
178
  @conn.execute "DROP SEQUENCE test2_employees_seq"
238
179
  end
239
180
 
240
- xit "should set NUMBER column type as decimal if emulate_integers_by_column_name is false" do
241
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_integers_by_column_name = false
242
- columns = @conn.columns('test2_employees')
243
- column = columns.detect{|c| c.name == "job_id"}
244
- expect(column.type).to eq(:decimal)
245
- end
246
-
247
- xit "should set NUMBER column type as integer if emulate_integers_by_column_name is true" do
248
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_integers_by_column_name = true
249
- columns = @conn.columns('test2_employees')
250
- column = columns.detect{|c| c.name == "job_id"}
251
- expect(column.type).to eq(:integer)
252
- column = columns.detect{|c| c.name == "id"}
253
- expect(column.type).to eq(:integer)
254
- end
255
-
256
- xit "should set NUMBER column type as decimal if column name does not contain 'id' and emulate_integers_by_column_name is true" do
257
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_integers_by_column_name = true
258
- columns = @conn.columns('test2_employees')
259
- column = columns.detect{|c| c.name == "salary"}
260
- expect(column.type).to eq(:decimal)
261
- end
262
-
263
- xit "should return BigDecimal value from NUMBER column if emulate_integers_by_column_name is false" do
264
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_integers_by_column_name = false
265
- columns = @conn.columns('test2_employees')
266
- column = columns.detect{|c| c.name == "job_id"}
267
- expect(@conn.lookup_cast_type_from_column(column).cast(1.0).class).to eq(BigDecimal)
268
- end
269
-
270
- xit "should return Fixnum value from NUMBER column if column name contains 'id' and emulate_integers_by_column_name is true" do
271
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_integers_by_column_name = true
272
- columns = @conn.columns('test2_employees')
273
- column = columns.detect{|c| c.name == "job_id"}
274
- expect(@conn.lookup_cast_type_from_column(column).cast(1.0).class).to eq(Fixnum)
275
- end
276
-
277
181
  describe "/ NUMBER values from ActiveRecord model" do
278
182
  before(:each) do
279
183
  class ::Test2Employee < ActiveRecord::Base
@@ -442,71 +346,12 @@ describe "OracleEnhancedAdapter boolean type detection based on string column ty
442
346
  end
443
347
  end
444
348
 
445
- xit "should set CHAR/VARCHAR2 column type as string if emulate_booleans_from_strings is false" do
446
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
447
- columns = @conn.columns('test3_employees')
448
- %w(has_email has_phone active_flag manager_yn).each do |col|
449
- column = columns.detect{|c| c.name == col}
450
- expect(column.type).to eq(:string)
451
- end
452
- end
453
-
454
- xit "should set CHAR/VARCHAR2 column type as boolean if emulate_booleans_from_strings is true" do
455
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
456
- columns = @conn.columns('test3_employees')
457
- %w(has_email has_phone active_flag manager_yn).each do |col|
458
- column = columns.detect{|c| c.name == col}
459
- expect(column.type).to eq(:boolean)
460
- end
461
- end
462
-
463
- xit "should set VARCHAR2 column type as string if column name does not contain 'flag' or 'yn' and emulate_booleans_from_strings is true" do
464
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
465
- columns = @conn.columns('test3_employees')
466
- %w(phone_number email).each do |col|
467
- column = columns.detect{|c| c.name == col}
468
- expect(column.type).to eq(:string)
469
- end
470
- end
471
-
472
- xit "should return string value from VARCHAR2 boolean column if emulate_booleans_from_strings is false" do
473
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
474
- columns = @conn.columns('test3_employees')
475
- %w(has_email has_phone active_flag manager_yn).each do |col|
476
- column = columns.detect{|c| c.name == col}
477
- expect(@conn.lookup_cast_type_from_column(column).cast("Y").class).to eq(String)
478
- end
479
- end
480
-
481
- xit "should return boolean value from VARCHAR2 boolean column if emulate_booleans_from_strings is true" do
482
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
483
- columns = @conn.columns('test3_employees')
484
- %w(has_email has_phone active_flag manager_yn).each do |col|
485
- column = columns.detect{|c| c.name == col}
486
- expect(@conn.lookup_cast_type_from_column(column).cast("Y").class).to eq(TrueClass)
487
- expect(@conn.lookup_cast_type_from_column(column).cast("N").class).to eq(FalseClass)
488
- end
489
- end
490
-
491
- xit "should translate boolean type to VARCHAR2(1) if emulate_booleans_from_strings is true" do
492
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
493
- expect(ActiveRecord::Base.connection.type_to_sql(
494
- :boolean, nil, nil, nil)).to eq("VARCHAR2(1)")
495
- end
496
-
497
349
  it "should translate boolean type to NUMBER(1) if emulate_booleans_from_strings is false" do
498
350
  # ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
499
351
  expect(ActiveRecord::Base.connection.type_to_sql(
500
352
  :boolean, nil, nil, nil)).to eq("NUMBER(1)")
501
353
  end
502
354
 
503
- xit "should get default value from VARCHAR2 boolean column if emulate_booleans_from_strings is true" do
504
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
505
- columns = @conn.columns('test3_employees')
506
- expect(columns.detect{|c| c.name == 'has_phone'}.default).to be_truthy
507
- expect(columns.detect{|c| c.name == 'manager_yn'}.default).to be_falsey
508
- end
509
-
510
355
  describe "/ VARCHAR2 boolean values from ActiveRecord model" do
511
356
  before(:each) do
512
357
  # ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
@@ -782,21 +627,6 @@ describe "OracleEnhancedAdapter date and timestamp with different NLS date forma
782
627
  expect(@employee.created_at_ts).to eq(@now)
783
628
  end
784
629
 
785
- xit "should quote Date values with TO_DATE" do
786
- expect(@conn.quote(@today)).to eq("TO_DATE('#{@today.year}-#{"%02d" % @today.month}-#{"%02d" % @today.day}','YYYY-MM-DD HH24:MI:SS')")
787
- end
788
-
789
- xit "should quote Time values with TO_DATE" do
790
- expect(@conn.quote(@now)).to eq("TO_DATE('#{@now.year}-#{"%02d" % @now.month}-#{"%02d" % @now.day} "+
791
- "#{"%02d" % @now.hour}:#{"%02d" % @now.min}:#{"%02d" % @now.sec}','YYYY-MM-DD HH24:MI:SS')")
792
- end
793
-
794
- xit "should quote Time values with TO_TIMESTAMP" do
795
- @ts = @now + 0.1
796
- expect(@conn.quote(@ts)).to eq("TO_TIMESTAMP('#{@ts.year}-#{"%02d" % @ts.month}-#{"%02d" % @ts.day} "+
797
- "#{"%02d" % @ts.hour}:#{"%02d" % @ts.min}:#{"%02d" % @ts.sec}:100000','YYYY-MM-DD HH24:MI:SS:FF6')")
798
- end
799
-
800
630
  end
801
631
 
802
632
  describe "OracleEnhancedAdapter assign string to :date and :datetime columns" do
@@ -1493,15 +1323,6 @@ describe "OracleEnhancedAdapter quoting of NCHAR and NVARCHAR2 columns" do
1493
1323
  ActiveRecord::Base.clear_cache! if ActiveRecord::Base.respond_to?(:"clear_cache!")
1494
1324
  end
1495
1325
 
1496
- xit "should set nchar instance variable" do
1497
- columns = @conn.columns('test_items')
1498
- %w(nchar_column nvarchar2_column char_column varchar2_column).each do |col|
1499
- column = columns.detect{|c| c.name == col}
1500
- expect(column.type).to eq(:string)
1501
- expect(column.nchar).to eq(col[0,1] == 'n' ? true : nil)
1502
- end
1503
- end
1504
-
1505
1326
  it "should quote with N prefix" do
1506
1327
  columns = @conn.columns('test_items')
1507
1328
  %w(nchar_column nvarchar2_column char_column varchar2_column).each do |col|
@@ -225,24 +225,6 @@ describe "OracleEnhancedAdapter schema dump" do
225
225
  expect(standard_dump(ignore_tables: [ /test_posts/i ])).to match(/add_foreign_key "test_comments"/)
226
226
  end
227
227
 
228
- it "should include composite foreign keys" do
229
- skip "Composite foreign keys are not supported in this version"
230
- schema_define do
231
- add_column :test_posts, :baz_id, :integer
232
- add_column :test_posts, :fooz_id, :integer
233
-
234
- execute <<-SQL
235
- ALTER TABLE TEST_POSTS
236
- ADD CONSTRAINT UK_FOOZ_BAZ UNIQUE (BAZ_ID,FOOZ_ID)
237
- SQL
238
-
239
- add_column :test_comments, :baz_id, :integer
240
- add_column :test_comments, :fooz_id, :integer
241
-
242
- add_foreign_key :test_comments, :test_posts, columns: ["baz_id", "fooz_id"], name: 'comments_posts_baz_fooz_fk'
243
- end
244
- expect(standard_dump).to match(/add_foreign_key "test_comments", "test_posts", columns: \["baz_id", "fooz_id"\], name: "comments_posts_baz_fooz_fk"/)
245
- end
246
228
  it "should include foreign keys following all tables" do
247
229
  # if foreign keys preceed declaration of all tables
248
230
  # it can cause problems when using db:test rake tasks
@@ -733,52 +733,6 @@ end
733
733
  expect(TestComment.find_by_id(c.id).test_post_id).to be_nil
734
734
  end
735
735
 
736
- it "should add a composite foreign key" do
737
- skip "Composite foreign keys are not supported in this version"
738
- schema_define do
739
- add_column :test_posts, :baz_id, :integer
740
- add_column :test_posts, :fooz_id, :integer
741
-
742
- execute <<-SQL
743
- ALTER TABLE TEST_POSTS
744
- ADD CONSTRAINT UK_FOOZ_BAZ UNIQUE (BAZ_ID,FOOZ_ID)
745
- SQL
746
-
747
- add_column :test_comments, :baz_id, :integer
748
- add_column :test_comments, :fooz_id, :integer
749
-
750
- add_foreign_key :test_comments, :test_posts, :columns => ["baz_id", "fooz_id"]
751
- end
752
-
753
- expect do
754
- TestComment.create(:body => "test", :fooz_id => 1, :baz_id => 1)
755
- end.to raise_error() {|e| expect(e.message).to match(
756
- /ORA-02291.*\.TES_COM_BAZ_ID_FOO_ID_FK/
757
- )}
758
- end
759
-
760
- it "should add a composite foreign key with name" do
761
- skip "Composite foreign keys are not supported in this version"
762
- schema_define do
763
- add_column :test_posts, :baz_id, :integer
764
- add_column :test_posts, :fooz_id, :integer
765
-
766
- execute <<-SQL
767
- ALTER TABLE TEST_POSTS
768
- ADD CONSTRAINT UK_FOOZ_BAZ UNIQUE (BAZ_ID,FOOZ_ID)
769
- SQL
770
-
771
- add_column :test_comments, :baz_id, :integer
772
- add_column :test_comments, :fooz_id, :integer
773
-
774
- add_foreign_key :test_comments, :test_posts, :columns => ["baz_id", "fooz_id"], :name => 'comments_posts_baz_fooz_fk'
775
- end
776
-
777
- expect do
778
- TestComment.create(:body => "test", :baz_id => 1, :fooz_id => 1)
779
- end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.COMMENTS_POSTS_BAZ_FOOZ_FK/)}
780
- end
781
-
782
736
  it "should remove foreign key by table name" do
783
737
  schema_define do
784
738
  add_foreign_key :test_comments, :test_posts
@@ -91,29 +91,6 @@ describe "OracleEnhancedAdapter structure dump" do
91
91
  expect(dump).to match(/ALTER TABLE \"?TEST_POSTS\"? ADD CONSTRAINT \"?FK_TEST_POST_BAZ\"? FOREIGN KEY \(\"?BAZ_ID\"?\) REFERENCES \"?FOOS\"?\(\"?BAZ_ID\"?\)/i)
92
92
  end
93
93
 
94
- it "should dump composite foreign keys" do
95
- skip "Composite foreign keys are not supported in this version"
96
- @conn.add_column :foos, :fooz_id, :integer
97
- @conn.add_column :foos, :baz_id, :integer
98
-
99
- @conn.execute <<-SQL
100
- ALTER TABLE FOOS
101
- ADD CONSTRAINT UK_FOOZ_BAZ UNIQUE (BAZ_ID,FOOZ_ID)
102
- SQL
103
-
104
- @conn.add_column :test_posts, :fooz_id, :integer
105
- @conn.add_column :test_posts, :baz_id, :integer
106
-
107
- @conn.execute <<-SQL
108
- ALTER TABLE TEST_POSTS
109
- ADD CONSTRAINT fk_test_post_fooz_baz FOREIGN KEY (baz_id,fooz_id) REFERENCES foos(baz_id,fooz_id)
110
- SQL
111
-
112
- dump = ActiveRecord::Base.connection.structure_dump_fk_constraints
113
- expect(dump.split('\n').length).to eq(1)
114
- expect(dump).to match(/ALTER TABLE \"?TEST_POSTS\"? ADD CONSTRAINT \"?FK_TEST_POST_FOOZ_BAZ\"? FOREIGN KEY \(\"?BAZ_ID\"?\,\"?FOOZ_ID\"?\) REFERENCES \"?FOOS\"?\(\"?BAZ_ID\"?\,\"?FOOZ_ID\"?\)/i)
115
- end
116
-
117
94
  it "should not error when no foreign keys are present" do
118
95
  dump = ActiveRecord::Base.connection.structure_dump_fk_constraints
119
96
  expect(dump.split('\n').length).to eq(0)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-oracle_enhanced-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0.beta1
4
+ version: 1.7.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raimonds Simanovskis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-18 00:00:00.000000000 Z
11
+ date: 2016-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '7.0'
47
+ version: 7.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '7.0'
54
+ version: 7.1.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: ruby-plsql
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -152,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - ">="
154
154
  - !ruby/object:Gem::Version
155
- version: '0'
155
+ version: 2.2.2
156
156
  required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - ">="