activerecord-oracle_enhanced-adapter 1.5.6 → 1.6.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.travis/oracle/download.sh +14 -0
  3. data/.travis/oracle/install.sh +31 -0
  4. data/.travis/setup_accounts.sh +9 -0
  5. data/.travis.yml +39 -0
  6. data/Gemfile +8 -8
  7. data/History.md +189 -0
  8. data/README.md +388 -178
  9. data/RUNNING_TESTS.md +11 -6
  10. data/VERSION +1 -1
  11. data/activerecord-oracle_enhanced-adapter.gemspec +29 -26
  12. data/lib/active_record/connection_adapters/{oracle_enhanced_column.rb → oracle_enhanced/column.rb} +14 -63
  13. data/lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb +66 -0
  14. data/lib/active_record/connection_adapters/{oracle_enhanced_connection.rb → oracle_enhanced/connection.rb} +2 -2
  15. data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +347 -0
  16. data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +260 -0
  17. data/lib/active_record/connection_adapters/oracle_enhanced/dirty.rb +40 -0
  18. data/lib/active_record/connection_adapters/{oracle_enhanced_jdbc_connection.rb → oracle_enhanced/jdbc_connection.rb} +13 -4
  19. data/lib/active_record/connection_adapters/{oracle_enhanced_oci_connection.rb → oracle_enhanced/oci_connection.rb} +11 -5
  20. data/lib/active_record/connection_adapters/{oracle_enhanced_procedures.rb → oracle_enhanced/procedures.rb} +1 -1
  21. data/lib/active_record/connection_adapters/{oracle_enhanced_schema_creation.rb → oracle_enhanced/schema_creation.rb} +34 -35
  22. data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +95 -0
  23. data/lib/active_record/connection_adapters/{oracle_enhanced_schema_dumper.rb → oracle_enhanced/schema_dumper.rb} +14 -37
  24. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +562 -0
  25. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +65 -0
  26. data/lib/active_record/connection_adapters/{oracle_enhanced_structure_dump.rb → oracle_enhanced/structure_dump.rb} +63 -14
  27. data/lib/active_record/connection_adapters/oracle_enhanced/version.rb +1 -0
  28. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +171 -73
  29. data/lib/active_record/oracle_enhanced/type/integer.rb +13 -0
  30. data/lib/active_record/oracle_enhanced/type/raw.rb +13 -0
  31. data/lib/active_record/oracle_enhanced/type/timestamp.rb +11 -0
  32. data/lib/activerecord-oracle_enhanced-adapter.rb +1 -1
  33. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +127 -49
  34. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +46 -5
  35. data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +11 -3
  36. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +3 -3
  37. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +151 -78
  38. data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +4 -4
  39. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +10 -16
  40. data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +1 -1
  41. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +5 -5
  42. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +65 -181
  43. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +114 -11
  44. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +17 -1
  45. data/spec/spec_config.yaml.template +11 -0
  46. data/spec/spec_helper.rb +31 -12
  47. data/spec/support/alter_system_user_password.sql +2 -0
  48. data/spec/support/create_oracle_enhanced_users.sql +31 -0
  49. metadata +37 -27
  50. data/lib/active_record/connection_adapters/oracle_enhanced_column_dumper.rb +0 -77
  51. data/lib/active_record/connection_adapters/oracle_enhanced_context_index.rb +0 -350
  52. data/lib/active_record/connection_adapters/oracle_enhanced_database_statements.rb +0 -262
  53. data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +0 -45
  54. data/lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb +0 -197
  55. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb +0 -450
  56. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb +0 -258
  57. data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +0 -1
  58. /data/lib/active_record/connection_adapters/{oracle_enhanced_cpk.rb → oracle_enhanced/cpk.rb} +0 -0
  59. /data/lib/active_record/connection_adapters/{oracle_enhanced_database_tasks.rb → oracle_enhanced/database_tasks.rb} +0 -0
@@ -30,7 +30,7 @@ describe "OracleEnhancedAdapter establish connection" do
30
30
  ActiveRecord::Base.connection.reconnect!
31
31
  ActiveRecord::Base.connection.should be_active
32
32
  end
33
-
33
+
34
34
  end
35
35
 
36
36
  describe "OracleEnhancedAdapter" do
@@ -40,7 +40,7 @@ describe "OracleEnhancedAdapter" do
40
40
  before(:all) do
41
41
  ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
42
42
  end
43
-
43
+
44
44
  describe "ignore specified table columns" do
45
45
  before(:all) do
46
46
  @conn = ActiveRecord::Base.connection
@@ -171,7 +171,7 @@ describe "OracleEnhancedAdapter" do
171
171
  end
172
172
 
173
173
  it 'should identify virtual columns as such' do
174
- pending "Not supported in this database version" unless @oracle11g_or_higher
174
+ skip "Not supported in this database version" unless @oracle11g_or_higher
175
175
  te = TestEmployee.connection.columns('test_employees').detect(&:virtual?)
176
176
  te.name.should == 'full_name'
177
177
  end
@@ -274,11 +274,11 @@ describe "OracleEnhancedAdapter" do
274
274
  end
275
275
 
276
276
  it "should tell ActiveRecord that count distinct is supported" do
277
- ActiveRecord::Base.connection.supports_count_distinct?.should be_true
277
+ ActiveRecord::Base.connection.supports_count_distinct?.should be true
278
278
  end
279
279
 
280
280
  it "should execute correct SQL COUNT DISTINCT statement" do
281
- lambda { TestEmployee.count(:employee_id, :distinct => true) }.should_not raise_error
281
+ lambda { TestEmployee.distinct.count(:employee_id) }.should_not raise_error
282
282
  end
283
283
 
284
284
  end
@@ -345,56 +345,56 @@ describe "OracleEnhancedAdapter" do
345
345
  end
346
346
 
347
347
  it "should be valid with letters and digits" do
348
- @adapter.valid_table_name?("abc_123").should be_true
348
+ @adapter.valid_table_name?("abc_123").should be true
349
349
  end
350
350
 
351
351
  it "should be valid with schema name" do
352
- @adapter.valid_table_name?("abc_123.def_456").should be_true
352
+ @adapter.valid_table_name?("abc_123.def_456").should be true
353
353
  end
354
354
 
355
355
  it "should be valid with $ in name" do
356
- @adapter.valid_table_name?("sys.v$session").should be_true
356
+ @adapter.valid_table_name?("sys.v$session").should be true
357
357
  end
358
358
 
359
359
  it "should be valid with upcase schema name" do
360
- @adapter.valid_table_name?("ABC_123.DEF_456").should be_true
360
+ @adapter.valid_table_name?("ABC_123.DEF_456").should be true
361
361
  end
362
362
 
363
363
  it "should be valid with irregular schema name and database links" do
364
- @adapter.valid_table_name?('abc$#_123.abc$#_123@abc$#@._123').should be_true
364
+ @adapter.valid_table_name?('abc$#_123.abc$#_123@abc$#@._123').should be true
365
365
  end
366
366
 
367
367
  it "should not be valid with two dots in name" do
368
- @adapter.valid_table_name?("abc_123.def_456.ghi_789").should be_false
368
+ @adapter.valid_table_name?("abc_123.def_456.ghi_789").should be false
369
369
  end
370
370
 
371
371
  it "should not be valid with invalid characters" do
372
- @adapter.valid_table_name?("warehouse-things").should be_false
372
+ @adapter.valid_table_name?("warehouse-things").should be false
373
373
  end
374
374
 
375
375
  it "should not be valid with for camel-case" do
376
- @adapter.valid_table_name?("Abc").should be_false
377
- @adapter.valid_table_name?("aBc").should be_false
378
- @adapter.valid_table_name?("abC").should be_false
376
+ @adapter.valid_table_name?("Abc").should be false
377
+ @adapter.valid_table_name?("aBc").should be false
378
+ @adapter.valid_table_name?("abC").should be false
379
379
  end
380
-
380
+
381
381
  it "should not be valid for names > 30 characters" do
382
- @adapter.valid_table_name?("a" * 31).should be_false
382
+ @adapter.valid_table_name?("a" * 31).should be false
383
383
  end
384
-
384
+
385
385
  it "should not be valid for schema names > 30 characters" do
386
- @adapter.valid_table_name?(("a" * 31) + ".validname").should be_false
386
+ @adapter.valid_table_name?(("a" * 31) + ".validname").should be false
387
387
  end
388
-
388
+
389
389
  it "should not be valid for database links > 128 characters" do
390
- @adapter.valid_table_name?("name@" + "a" * 129).should be_false
390
+ @adapter.valid_table_name?("name@" + "a" * 129).should be false
391
391
  end
392
-
392
+
393
393
  it "should not be valid for names that do not begin with alphabetic characters" do
394
- @adapter.valid_table_name?("1abc").should be_false
395
- @adapter.valid_table_name?("_abc").should be_false
396
- @adapter.valid_table_name?("abc.1xyz").should be_false
397
- @adapter.valid_table_name?("abc._xyz").should be_false
394
+ @adapter.valid_table_name?("1abc").should be false
395
+ @adapter.valid_table_name?("_abc").should be false
396
+ @adapter.valid_table_name?("abc.1xyz").should be false
397
+ @adapter.valid_table_name?("abc._xyz").should be false
398
398
  end
399
399
  end
400
400
 
@@ -457,7 +457,7 @@ describe "OracleEnhancedAdapter" do
457
457
 
458
458
  cc = CamelCase.create!(:name => "Foo", :foo => 2)
459
459
  cc.id.should_not be_nil
460
-
460
+
461
461
  @conn.tables.should include("CamelCase")
462
462
  end
463
463
 
@@ -476,7 +476,7 @@ describe "OracleEnhancedAdapter" do
476
476
  t.string :title
477
477
  # cannot update LOBs over database link
478
478
  t.string :body
479
- t.timestamps
479
+ t.timestamps null: true
480
480
  end
481
481
  @db_link_username = SYSTEM_CONNECTION_PARAMS[:username]
482
482
  @db_link_password = SYSTEM_CONNECTION_PARAMS[:password]
@@ -554,7 +554,7 @@ describe "OracleEnhancedAdapter" do
554
554
  @conn.create_table :foos, :temporary => true, :id => false do |t|
555
555
  t.integer :id
556
556
  end
557
- @conn.temporary_table?("foos").should be_true
557
+ @conn.temporary_table?("foos").should be true
558
558
  end
559
559
  end
560
560
 
@@ -600,7 +600,7 @@ describe "OracleEnhancedAdapter" do
600
600
  posts.size.should == @ids.size
601
601
  end
602
602
 
603
- end if ENV['RAILS_GEM_VERSION'] >= '3.1'
603
+ end
604
604
 
605
605
  describe "with statement pool" do
606
606
  before(:all) do
@@ -628,8 +628,8 @@ describe "OracleEnhancedAdapter" do
628
628
  end
629
629
 
630
630
  it "should clear older cursors when statement limit is reached" do
631
- pk = TestPost.columns.find { |c| c.primary }
632
- sub = @conn.substitute_at(pk, 0)
631
+ pk = TestPost.columns_hash[TestPost.primary_key]
632
+ sub = @conn.substitute_at(pk, 0).to_sql
633
633
  binds = [[pk, 1]]
634
634
 
635
635
  lambda {
@@ -641,8 +641,8 @@ describe "OracleEnhancedAdapter" do
641
641
 
642
642
  it "should cache UPDATE statements with bind variables" do
643
643
  lambda {
644
- pk = TestPost.columns.find { |c| c.primary }
645
- sub = @conn.substitute_at(pk, 0)
644
+ pk = TestPost.columns_hash[TestPost.primary_key]
645
+ sub = @conn.substitute_at(pk, 0).to_sql
646
646
  binds = [[pk, 1]]
647
647
  @conn.exec_update("UPDATE test_posts SET id = #{sub}", "SQL", binds)
648
648
  }.should change(@statements, :length).by(+1)
@@ -654,7 +654,7 @@ describe "OracleEnhancedAdapter" do
654
654
  @conn.exec_update("UPDATE test_posts SET id = 1", "SQL", binds)
655
655
  }.should_not change(@statements, :length)
656
656
  end
657
- end if ENV['RAILS_GEM_VERSION'] >= '3.1'
657
+ end
658
658
 
659
659
  describe "explain" do
660
660
  before(:all) do
@@ -682,36 +682,114 @@ describe "OracleEnhancedAdapter" do
682
682
  end
683
683
 
684
684
  it "should explain query with binds" do
685
- pk = TestPost.columns.find { |c| c.primary }
685
+ pk = TestPost.columns_hash[TestPost.primary_key]
686
686
  sub = @conn.substitute_at(pk, 0)
687
687
  explain = TestPost.where(TestPost.arel_table[pk.name].eq(sub)).bind([pk, 1]).explain
688
688
  explain.should include("Cost")
689
689
  explain.should include("INDEX UNIQUE SCAN")
690
690
  end
691
- end if ENV['RAILS_GEM_VERSION'] >= '3.2'
691
+ end
692
692
 
693
- describe ".is_integer_column?" do
693
+ describe "using offset and limit" do
694
694
  before(:all) do
695
- @adapter = ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter
695
+ @conn = ActiveRecord::Base.connection
696
+ @conn.execute "DROP TABLE test_employees" rescue nil
697
+ @conn.execute <<-SQL
698
+ CREATE TABLE test_employees (
699
+ id NUMBER PRIMARY KEY,
700
+ sort_order NUMBER(38,0),
701
+ first_name VARCHAR2(20),
702
+ last_name VARCHAR2(25),
703
+ updated_at DATE,
704
+ created_at DATE
705
+ )
706
+ SQL
707
+ @conn.execute "DROP SEQUENCE test_employees_seq" rescue nil
708
+ @conn.execute <<-SQL
709
+ CREATE SEQUENCE test_employees_seq MINVALUE 1
710
+ INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE
711
+ SQL
712
+ @employee = Class.new(ActiveRecord::Base) do
713
+ self.table_name = :test_employees
714
+ end
715
+ i = 0
716
+ @employee.create!(sort_order: i+=1, first_name: 'Peter', last_name: 'Parker')
717
+ @employee.create!(sort_order: i+=1, first_name: 'Tony', last_name: 'Stark')
718
+ @employee.create!(sort_order: i+=1, first_name: 'Steven', last_name: 'Rogers')
719
+ @employee.create!(sort_order: i+=1, first_name: 'Bruce', last_name: 'Banner')
720
+ @employee.create!(sort_order: i+=1, first_name: 'Natasha', last_name: 'Romanova')
696
721
  end
697
722
 
698
- it "should return TrueClass or FalseClass" do
699
- @adapter.is_integer_column?("adapter_id").should be_a TrueClass
700
- @adapter.is_integer_column?("").should be_a FalseClass
723
+ after(:all) do
724
+ @conn.execute "DROP TABLE test_employees"
725
+ @conn.execute "DROP SEQUENCE test_employees_seq"
701
726
  end
702
727
 
703
- it "should return true if name is 'id'" do
704
- @adapter.is_integer_column?("id").should be_true
728
+ after(:each) do
729
+ ActiveRecord::Base.connection.clear_ignored_table_columns
730
+ ActiveRecord::Base.clear_cache! if ActiveRecord::Base.respond_to?(:"clear_cache!")
731
+ end
732
+
733
+ it "should return n records with limit(n)" do
734
+ @employee.limit(3).to_a.size.should be(3)
705
735
  end
706
736
 
707
- it "should return true if name ends with '_id'" do
708
- @adapter.is_integer_column?("_id").should be_true
709
- @adapter.is_integer_column?("foo_id").should be_true
737
+ it "should return less than n records with limit(n) if there exist less than n records" do
738
+ @employee.limit(10).to_a.size.should be(5)
710
739
  end
711
740
 
712
- it "should return false if name is 'something_else'" do
713
- @adapter.is_integer_column?("something_else").should be_false
741
+ it "should return the records starting from offset n with offset(n)" do
742
+ expect(@employee.order(:sort_order).first.first_name.should).to eq("Peter")
743
+ expect(@employee.order(:sort_order).offset(0).first.first_name.should).to eq("Peter")
744
+ expect(@employee.order(:sort_order).offset(1).first.first_name.should).to eq("Tony")
745
+ expect(@employee.order(:sort_order).offset(4).first.first_name.should).to eq("Natasha")
714
746
  end
715
747
  end
716
748
 
749
+ describe 'serialized column' do
750
+
751
+ before(:all) do
752
+ schema_define do
753
+ create_table :test_serialized_columns do |t|
754
+ t.text :serialized
755
+ end
756
+ end
757
+ class ::TestSerializedColumn < ActiveRecord::Base
758
+ serialize :serialized, Array
759
+ end
760
+ end
761
+
762
+ after(:all) do
763
+ schema_define do
764
+ drop_table :test_serialized_columns
765
+ end
766
+ Object.send(:remove_const, 'TestSerializedColumn')
767
+ ActiveRecord::Base.table_name_prefix = nil
768
+ ActiveRecord::Base.clear_cache! if ActiveRecord::Base.respond_to?(:"clear_cache!")
769
+ end
770
+
771
+ before(:each) do
772
+ set_logger
773
+ end
774
+
775
+ after(:each) do
776
+ clear_logger
777
+ end
778
+
779
+ it 'should serialize' do
780
+ new_value = 'new_value'
781
+ serialized_column = TestSerializedColumn.new
782
+
783
+ expect(serialized_column.serialized.should).to eq([])
784
+ serialized_column.serialized << new_value
785
+ expect(serialized_column.serialized.should).to eq([new_value])
786
+ serialized_column.save
787
+ expect(serialized_column.save!.should).to eq(true)
788
+
789
+ serialized_column.reload
790
+ expect(serialized_column.serialized.should).to eq([new_value])
791
+ serialized_column.serialized = []
792
+ expect(serialized_column.save!.should).to eq(true)
793
+ end
794
+ end
717
795
  end
@@ -16,7 +16,7 @@ describe "OracleEnhancedConnection" do
16
16
  end
17
17
 
18
18
  it "should ping active connection" do
19
- @conn.ping.should be_true
19
+ @conn.ping.should be true
20
20
  end
21
21
 
22
22
  it "should not ping inactive connection" do
@@ -35,6 +35,30 @@ describe "OracleEnhancedConnection" do
35
35
 
36
36
  end
37
37
 
38
+ describe "create connection with schema option" do
39
+ before(:all) do
40
+ @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_WITH_SCHEMA_PARAMS)
41
+ end
42
+
43
+ before(:each) do
44
+ @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_WITH_SCHEMA_PARAMS) unless @conn.active?
45
+ end
46
+
47
+ it "should create new connection" do
48
+ @conn.should be_active
49
+ end
50
+
51
+ it "should swith to specified schema" do
52
+ @conn.select_value("select SYS_CONTEXT('userenv', 'current_schema') from dual").should == CONNECTION_WITH_SCHEMA_PARAMS[:schema].upcase
53
+ end
54
+
55
+ it "should swith to specified schema after reset" do
56
+ @conn.reset!
57
+ @conn.select_value("select SYS_CONTEXT('userenv', 'current_schema') from dual").should == CONNECTION_WITH_SCHEMA_PARAMS[:schema].upcase
58
+ end
59
+
60
+ end
61
+
38
62
  describe "create connection with NLS parameters" do
39
63
  after do
40
64
  ENV['NLS_DATE_FORMAT'] = nil
@@ -86,6 +110,23 @@ describe "OracleEnhancedConnection" do
86
110
  end
87
111
  end
88
112
 
113
+ describe 'with host="connection-string"' do
114
+ let(:username) { CONNECTION_PARAMS[:username] }
115
+ let(:password) { CONNECTION_PARAMS[:password] }
116
+ let(:connection_string) { "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=#{DATABASE_HOST})(PORT=#{DATABASE_PORT})))(CONNECT_DATA=(SERVICE_NAME=#{DATABASE_NAME})))" }
117
+ let(:params) { { username: username, password: password, host: 'connection-string', database: connection_string } }
118
+
119
+ it 'uses the database param as the connection string' do
120
+ if ORACLE_ENHANCED_CONNECTION == :jdbc
121
+ expect(java.sql.DriverManager).to receive(:getConnection).with("jdbc:oracle:thin:@#{connection_string}", anything).and_call_original
122
+ else
123
+ expect(OCI8).to receive(:new).with(username, password, connection_string, nil).and_call_original
124
+ end
125
+ conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
126
+ expect(conn).to be_active
127
+ end
128
+ end
129
+
89
130
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
90
131
 
91
132
  describe "create JDBC connection" do
@@ -125,7 +166,7 @@ describe "OracleEnhancedConnection" do
125
166
  import 'org.apache.commons.dbcp.PoolableConnectionFactory'
126
167
  import 'org.apache.commons.dbcp.DriverManagerConnectionFactory'
127
168
  rescue NameError => e
128
- return pending e.message
169
+ return skip e.message
129
170
  end
130
171
 
131
172
  class InitialContextMock
@@ -146,7 +187,7 @@ describe "OracleEnhancedConnection" do
146
187
  end
147
188
  end
148
189
 
149
- javax.naming.InitialContext.stub!(:new).and_return(InitialContextMock.new)
190
+ javax.naming.InitialContext.stub(:new).and_return(InitialContextMock.new)
150
191
 
151
192
  params = {}
152
193
  params[:jndi] = 'java:comp/env/jdbc/test'
@@ -161,7 +202,7 @@ describe "OracleEnhancedConnection" do
161
202
  params[:url] = "jdbc:oracle:thin:@#{DATABASE_HOST && "//#{DATABASE_HOST}#{DATABASE_PORT && ":#{DATABASE_PORT}"}/"}#{DATABASE_NAME}"
162
203
  params[:host] = nil
163
204
  params[:database] = nil
164
- java.sql.DriverManager.stub!(:getConnection).and_raise('no suitable driver found')
205
+ java.sql.DriverManager.stub(:getConnection).and_raise('no suitable driver found')
165
206
  @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
166
207
  @conn.should be_active
167
208
  end
@@ -227,7 +268,7 @@ describe "OracleEnhancedConnection" do
227
268
 
228
269
  it "should execute prepared statement with decimal bind parameter " do
229
270
  cursor = @conn.prepare("INSERT INTO test_employees VALUES(:1)")
230
- column = ActiveRecord::ConnectionAdapters::OracleEnhancedColumn.new('age', nil, 'NUMBER(10,2)')
271
+ column = ActiveRecord::ConnectionAdapters::OracleEnhancedColumn.new('age', nil, ActiveRecord::Type::Decimal.new, 'NUMBER(10,2)')
231
272
  column.type.should == :decimal
232
273
  cursor.bind_param(1, "1.5", column)
233
274
  cursor.exec
@@ -11,7 +11,7 @@ describe "OracleEnhancedAdapter context index" do
11
11
  t.string :title
12
12
  t.text :body
13
13
  t.integer :comments_count
14
- t.timestamps
14
+ t.timestamps null: true
15
15
  t.string :all_text, limit: 2 # will be used for multi-column index
16
16
  end
17
17
  end
@@ -23,7 +23,7 @@ describe "OracleEnhancedAdapter context index" do
23
23
  t.integer :post_id
24
24
  t.string :author
25
25
  t.text :body
26
- t.timestamps
26
+ t.timestamps null: true
27
27
  end
28
28
  end
29
29
  end
@@ -103,7 +103,7 @@ describe "OracleEnhancedAdapter context index" do
103
103
 
104
104
  it "should not include text index secondary tables in user tables list" do
105
105
  @conn.add_context_index :posts, :title
106
- @conn.tables.any?{|t| t =~ /^dr\$/i}.should be_false
106
+ @conn.tables.any?{|t| t =~ /^dr\$/i}.should be false
107
107
  @conn.remove_context_index :posts, :title
108
108
  end
109
109
 
@@ -169,6 +169,14 @@ describe "OracleEnhancedAdapter context index" do
169
169
  end
170
170
  @conn.remove_context_index :posts, :title
171
171
  end
172
+
173
+ it "should use index when contains has schema_name.table_name syntax" do
174
+ @conn.add_context_index :posts, :title
175
+ @title_words.each do |word|
176
+ Post.contains('posts.title', word).to_a.should == [@post2, @post1]
177
+ end
178
+ @conn.remove_context_index :posts, :title
179
+ end
172
180
  end
173
181
 
174
182
  describe "on multiple tables" do
@@ -52,7 +52,7 @@ describe "OracleEnhancedAdapter composite_primary_keys support" do
52
52
  end
53
53
 
54
54
  it "should tell ActiveRecord that count distinct is not supported" do
55
- ActiveRecord::Base.connection.supports_count_distinct?.should be_false
55
+ ActiveRecord::Base.connection.supports_count_distinct?.should be false
56
56
  end
57
57
 
58
58
  it "should execute correct SQL COUNT DISTINCT statement on table with composite primary keys" do
@@ -67,12 +67,12 @@ describe "OracleEnhancedAdapter composite_primary_keys support" do
67
67
  t.string :type_category, :limit => 15, :null => false
68
68
  t.date :date_value, :null => false
69
69
  t.text :results, :null => false
70
- t.timestamps
70
+ t.timestamps null: true
71
71
  end
72
72
  create_table :non_cpk_write_lobs_test, :force => true do |t|
73
73
  t.date :date_value, :null => false
74
74
  t.text :results, :null => false
75
- t.timestamps
75
+ t.timestamps null: true
76
76
  end
77
77
  end
78
78
  class ::CpkWriteLobsTest < ActiveRecord::Base