activerecord-oracle_enhanced-adapter 1.6.5 → 1.6.6
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.md +8 -0
- data/RUNNING_TESTS.md +8 -6
- data/VERSION +1 -1
- data/activerecord-oracle_enhanced-adapter.gemspec +2 -2
- data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +1 -1
- data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +23 -23
- data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +4 -4
- data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +9 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +39 -5
- data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +3 -3
- data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +3 -3
- data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +3 -4
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +13 -16
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +6 -6
- data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +3 -3
- data/spec/spec_config.yaml.template +3 -2
- data/spec/spec_helper.rb +1 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4eeebb449df33ca90a32d115eb7560f63620e7f
|
4
|
+
data.tar.gz: b44d067ce520271d27dff3e695cc0e2a8a0304f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b17c6f686b146973b005f5818c7325aed083703c459dcc78e28249a8fae881251ab426c3bf145d2f82f8f6050d8abba935f9fb589b00ad714d68cd33840a3cad
|
7
|
+
data.tar.gz: 292f74cb32c919c502953774f36e934e4b24ff51c26beecf4585cb571412bf58893947d2e7d7edc42ec9fac17885768d011c1d7294c1d4185a6ec64a2eacee6c
|
data/History.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 1.6.6 / 2016-01-21
|
2
|
+
|
3
|
+
* Changes and bug fixes since 1.6.5
|
4
|
+
* Address ORA-00904 when CONTAINS has `table_name.column_name` [#758, #664, #463]
|
5
|
+
* Only convert N to false when emulating booleans [#751]
|
6
|
+
* Clean up specs and test documentation [#756]
|
7
|
+
* Add JDBC Drivers to gitignore [#745]
|
8
|
+
|
1
9
|
## 1.6.5 / 2015-12-01
|
2
10
|
|
3
11
|
* Enhancement
|
data/RUNNING_TESTS.md
CHANGED
@@ -16,7 +16,9 @@ to increase process limit and then restart the database (this will be necessary
|
|
16
16
|
Ruby versions
|
17
17
|
-------------
|
18
18
|
|
19
|
-
|
19
|
+
oracle_enhanced is tested with MRI 2.1.x and 2.2.x, and JRuby 1.7.x and 9.0.x.x.
|
20
|
+
|
21
|
+
It is recommended to use [RVM](http://rvm.beginrescueend.com) to run tests with different Ruby implementations.
|
20
22
|
|
21
23
|
Running tests
|
22
24
|
-------------
|
@@ -29,19 +31,19 @@ Running tests
|
|
29
31
|
SQL> CREATE USER oracle_enhanced_schema IDENTIFIED BY oracle_enhanced_schema;
|
30
32
|
SQL> GRANT unlimited tablespace, create session, create table, create sequence, create procedure, create trigger, create view, create materialized view, create database link, create synonym, create type, ctxapp TO oracle_enhanced_schema;
|
31
33
|
|
32
|
-
* If you use RVM then switch to corresponding Ruby
|
34
|
+
* If you use RVM then switch to corresponding Ruby. It is recommended to create isolated gemsets for test purposes (e.g. rvm create gemset oracle_enhanced)
|
33
35
|
|
34
36
|
* Install bundler with
|
35
37
|
|
36
38
|
gem install bundler
|
37
39
|
|
38
|
-
* Set RAILS_GEM_VERSION to Rails version that you would like to use in oracle_enhanced tests, e.g.
|
39
|
-
|
40
|
-
export RAILS_GEM_VERSION=3.0.3
|
41
|
-
|
42
40
|
* Install necessary gems with
|
43
41
|
|
44
42
|
bundle install
|
43
|
+
|
44
|
+
* Configure database credentials in one of two ways:
|
45
|
+
* copy spec/spec_config.yaml.template to spec/config.yaml and modify as needed
|
46
|
+
* set required environment variables (see DATABASE_NAME in spec_helper.rb)
|
45
47
|
|
46
48
|
* Run tests with
|
47
49
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.6.
|
1
|
+
1.6.6
|
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{activerecord-oracle_enhanced-adapter}
|
8
|
-
s.version = "1.6.
|
8
|
+
s.version = "1.6.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.license = 'MIT'
|
12
12
|
s.authors = [%q{Raimonds Simanovskis}]
|
13
|
-
s.date = %q{2015-
|
13
|
+
s.date = %q{2015-01-21}
|
14
14
|
s.description = %q{Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
|
15
15
|
This adapter is superset of original ActiveRecord Oracle adapter.
|
16
16
|
}
|
@@ -332,7 +332,7 @@ module ActiveRecord
|
|
332
332
|
# Add context index condition.
|
333
333
|
def contains(column, query, options ={})
|
334
334
|
score_label = options[:label].to_i || 1
|
335
|
-
where("CONTAINS(#{connection.
|
335
|
+
where("CONTAINS(#{connection.quote_table_name(column)}, ?, #{score_label}) > 0", query).
|
336
336
|
order("SCORE(#{score_label}) DESC")
|
337
337
|
end
|
338
338
|
end
|
@@ -1075,7 +1075,7 @@ module ActiveRecord
|
|
1075
1075
|
row['data_default'].sub!(/^'(.*)'$/m, '\1')
|
1076
1076
|
row['data_default'] = nil if row['data_default'] =~ /^(null|empty_[bc]lob\(\))$/i
|
1077
1077
|
# TODO: Needs better fix to fallback "N" to false
|
1078
|
-
row['data_default'] = false if row['data_default'] == "N"
|
1078
|
+
row['data_default'] = false if (row['data_default'] == "N" && OracleEnhancedAdapter.emulate_booleans_from_strings)
|
1079
1079
|
end
|
1080
1080
|
|
1081
1081
|
# TODO: Consider to extract another method such as `get_cast_type`
|
@@ -171,7 +171,7 @@ describe "OracleEnhancedAdapter" do
|
|
171
171
|
end
|
172
172
|
|
173
173
|
it 'should identify virtual columns as such' do
|
174
|
-
|
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,7 +274,7 @@ 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
|
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
|
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
377
|
-
@adapter.valid_table_name?("aBc").should
|
378
|
-
@adapter.valid_table_name?("abC").should
|
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
|
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
|
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
|
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
|
395
|
-
@adapter.valid_table_name?("_abc").should
|
396
|
-
@adapter.valid_table_name?("abc.1xyz").should
|
397
|
-
@adapter.valid_table_name?("abc._xyz").should
|
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
|
|
@@ -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
|
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
|
603
|
+
end
|
604
604
|
|
605
605
|
describe "with statement pool" do
|
606
606
|
before(:all) do
|
@@ -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
|
657
|
+
end
|
658
658
|
|
659
659
|
describe "explain" do
|
660
660
|
before(:all) do
|
@@ -688,7 +688,7 @@ describe "OracleEnhancedAdapter" do
|
|
688
688
|
explain.should include("Cost")
|
689
689
|
explain.should include("INDEX UNIQUE SCAN")
|
690
690
|
end
|
691
|
-
end
|
691
|
+
end
|
692
692
|
|
693
693
|
describe "using offset and limit" do
|
694
694
|
before(:all) do
|
@@ -16,7 +16,7 @@ describe "OracleEnhancedConnection" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should ping active connection" do
|
19
|
-
@conn.ping.should
|
19
|
+
@conn.ping.should be true
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should not ping inactive connection" do
|
@@ -149,7 +149,7 @@ describe "OracleEnhancedConnection" do
|
|
149
149
|
import 'org.apache.commons.dbcp.PoolableConnectionFactory'
|
150
150
|
import 'org.apache.commons.dbcp.DriverManagerConnectionFactory'
|
151
151
|
rescue NameError => e
|
152
|
-
return
|
152
|
+
return skip e.message
|
153
153
|
end
|
154
154
|
|
155
155
|
class InitialContextMock
|
@@ -170,7 +170,7 @@ describe "OracleEnhancedConnection" do
|
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
|
-
javax.naming.InitialContext.stub
|
173
|
+
javax.naming.InitialContext.stub(:new).and_return(InitialContextMock.new)
|
174
174
|
|
175
175
|
params = {}
|
176
176
|
params[:jndi] = 'java:comp/env/jdbc/test'
|
@@ -185,7 +185,7 @@ describe "OracleEnhancedConnection" do
|
|
185
185
|
params[:url] = "jdbc:oracle:thin:@#{DATABASE_HOST && "//#{DATABASE_HOST}#{DATABASE_PORT && ":#{DATABASE_PORT}"}/"}#{DATABASE_NAME}"
|
186
186
|
params[:host] = nil
|
187
187
|
params[:database] = nil
|
188
|
-
java.sql.DriverManager.stub
|
188
|
+
java.sql.DriverManager.stub(:getConnection).and_raise('no suitable driver found')
|
189
189
|
@conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
|
190
190
|
@conn.should be_active
|
191
191
|
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
|
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
|
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
|
@@ -376,6 +376,43 @@ describe "OracleEnhancedAdapter boolean type detection based on string column ty
|
|
376
376
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
|
377
377
|
end
|
378
378
|
|
379
|
+
before(:each) do
|
380
|
+
class ::Test3Employee < ActiveRecord::Base
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
after(:each) do
|
385
|
+
Object.send(:remove_const, "Test3Employee")
|
386
|
+
@conn.clear_types_for_columns
|
387
|
+
ActiveRecord::Base.clear_cache! if ActiveRecord::Base.respond_to?(:"clear_cache!")
|
388
|
+
end
|
389
|
+
|
390
|
+
describe "default values in new records" do
|
391
|
+
context "when emulate_booleans_from_strings is false" do
|
392
|
+
before do
|
393
|
+
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
|
394
|
+
end
|
395
|
+
|
396
|
+
it "are Y or N" do
|
397
|
+
subject = Test3Employee.new
|
398
|
+
expect(subject.has_phone).to eq('Y')
|
399
|
+
expect(subject.manager_yn).to eq('N')
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
403
|
+
context "when emulate_booleans_from_strings is true" do
|
404
|
+
before do
|
405
|
+
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
|
406
|
+
end
|
407
|
+
|
408
|
+
it "are True or False" do
|
409
|
+
subject = Test3Employee.new
|
410
|
+
expect(subject.has_phone).to be_a(TrueClass)
|
411
|
+
expect(subject.manager_yn).to be_a(FalseClass)
|
412
|
+
end
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
379
416
|
it "should set CHAR/VARCHAR2 column type as string if emulate_booleans_from_strings is false" do
|
380
417
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
|
381
418
|
columns = @conn.columns('test3_employees')
|
@@ -437,19 +474,16 @@ describe "OracleEnhancedAdapter boolean type detection based on string column ty
|
|
437
474
|
it "should get default value from VARCHAR2 boolean column if emulate_booleans_from_strings is true" do
|
438
475
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = true
|
439
476
|
columns = @conn.columns('test3_employees')
|
440
|
-
columns.detect{|c| c.name == 'has_phone'}.default.should
|
441
|
-
columns.detect{|c| c.name == 'manager_yn'}.default.should
|
477
|
+
columns.detect{|c| c.name == 'has_phone'}.default.should eq 'Y'
|
478
|
+
columns.detect{|c| c.name == 'manager_yn'}.default.should be false
|
442
479
|
end
|
443
480
|
|
444
481
|
describe "/ VARCHAR2 boolean values from ActiveRecord model" do
|
445
482
|
before(:each) do
|
446
483
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans_from_strings = false
|
447
|
-
class ::Test3Employee < ActiveRecord::Base
|
448
|
-
end
|
449
484
|
end
|
450
485
|
|
451
486
|
after(:each) do
|
452
|
-
Object.send(:remove_const, "Test3Employee")
|
453
487
|
@conn.clear_types_for_columns
|
454
488
|
ActiveRecord::Base.clear_cache! if ActiveRecord::Base.respond_to?(:"clear_cache!")
|
455
489
|
end
|
@@ -42,14 +42,14 @@ describe "Oracle Enhanced adapter database tasks" do
|
|
42
42
|
describe "drop" do
|
43
43
|
before { ActiveRecord::Tasks::DatabaseTasks.drop(config) }
|
44
44
|
it "drops all tables" do
|
45
|
-
ActiveRecord::Base.connection.table_exists?(:test_posts).should
|
45
|
+
ActiveRecord::Base.connection.table_exists?(:test_posts).should be false
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
describe "purge" do
|
50
50
|
before { ActiveRecord::Tasks::DatabaseTasks.purge(config) }
|
51
51
|
it "drops all tables" do
|
52
|
-
ActiveRecord::Base.connection.table_exists?(:test_posts).should
|
52
|
+
ActiveRecord::Base.connection.table_exists?(:test_posts).should be false
|
53
53
|
ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM RECYCLEBIN").should == 0
|
54
54
|
end
|
55
55
|
end
|
@@ -77,7 +77,7 @@ describe "Oracle Enhanced adapter database tasks" do
|
|
77
77
|
ActiveRecord::Tasks::DatabaseTasks.structure_load(config, temp_file)
|
78
78
|
end
|
79
79
|
it "loads the database structure from a file" do
|
80
|
-
ActiveRecord::Base.connection.table_exists?(:test_posts).should
|
80
|
+
ActiveRecord::Base.connection.table_exists?(:test_posts).should be true
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -110,7 +110,7 @@ if ActiveRecord::Base.method_defined?(:changed?)
|
|
110
110
|
it "should not mark integer as changed when reassigning it" do
|
111
111
|
@employee = TestEmployee.new
|
112
112
|
@employee.job_id = 0
|
113
|
-
@employee.save
|
113
|
+
@employee.save.should be true
|
114
114
|
|
115
115
|
@employee.should_not be_changed
|
116
116
|
|
@@ -122,7 +122,7 @@ if ActiveRecord::Base.method_defined?(:changed?)
|
|
122
122
|
@employee = TestEmployee.create!(
|
123
123
|
:comments => "initial"
|
124
124
|
)
|
125
|
-
@employee.save
|
125
|
+
@employee.save.should be true
|
126
126
|
@employee.reload
|
127
127
|
@employee.comments.should == 'initial'
|
128
128
|
|
@@ -130,7 +130,7 @@ if ActiveRecord::Base.method_defined?(:changed?)
|
|
130
130
|
class << oci_conn
|
131
131
|
def write_lob(lob, value, is_binary = false); raise "don't do this'"; end
|
132
132
|
end
|
133
|
-
@employee.save
|
133
|
+
expect { @employee.save! }.to_not raise_error
|
134
134
|
class << oci_conn
|
135
135
|
remove_method :write_lob
|
136
136
|
end
|
@@ -12,7 +12,7 @@ describe "OracleEnhancedAdapter emulate OracleAdapter" do
|
|
12
12
|
it "should be an OracleAdapter" do
|
13
13
|
@conn = ActiveRecord::Base.establish_connection(CONNECTION_PARAMS.merge(:emulate_oracle_adapter => true))
|
14
14
|
ActiveRecord::Base.connection.should_not be_nil
|
15
|
-
ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::OracleAdapter).should
|
15
|
+
ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::OracleAdapter).should be true
|
16
16
|
end
|
17
17
|
|
18
18
|
after(:all) do
|
@@ -186,7 +186,7 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
186
186
|
lambda {
|
187
187
|
@employee.save
|
188
188
|
}.should raise_error("Make the transaction rollback")
|
189
|
-
@employee.
|
189
|
+
@employee.new_record?.should be true
|
190
190
|
TestEmployee.count.should == employees_count
|
191
191
|
end
|
192
192
|
|
@@ -263,7 +263,6 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
263
263
|
end
|
264
264
|
|
265
265
|
it "should delete record and set destroyed flag" do
|
266
|
-
return pending("Not in this ActiveRecord version (requires >= 2.3.5)") unless TestEmployee.method_defined?(:destroyed?)
|
267
266
|
@employee = TestEmployee.create(
|
268
267
|
:first_name => "First",
|
269
268
|
:last_name => "Last",
|
@@ -360,7 +359,7 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
360
359
|
:last_name => "Last",
|
361
360
|
:hire_date => @today
|
362
361
|
)
|
363
|
-
@employee.save.should
|
362
|
+
@employee.save.should be false
|
364
363
|
@employee.errors[:first_name].should_not be_blank
|
365
364
|
end
|
366
365
|
|
@@ -371,7 +370,7 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
371
370
|
:hire_date => @today
|
372
371
|
)
|
373
372
|
@employee.first_name = nil
|
374
|
-
@employee.save.should
|
373
|
+
@employee.save.should be false
|
375
374
|
@employee.errors[:first_name].should_not be_blank
|
376
375
|
end
|
377
376
|
|
@@ -226,7 +226,7 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
226
226
|
end
|
227
227
|
|
228
228
|
it "should include composite foreign keys" do
|
229
|
-
|
229
|
+
skip "Composite foreign keys are not supported in this version"
|
230
230
|
schema_define do
|
231
231
|
add_column :test_posts, :baz_id, :integer
|
232
232
|
add_column :test_posts, :fooz_id, :integer
|
@@ -341,7 +341,7 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
341
341
|
|
342
342
|
it "should specify non-default tablespace in add index" do
|
343
343
|
tablespace_name = @conn.default_tablespace
|
344
|
-
@conn.stub
|
344
|
+
@conn.stub(:default_tablespace).and_return('dummy')
|
345
345
|
create_test_posts_table
|
346
346
|
standard_dump.should =~ /add_index "test_posts", \["title"\], name: "index_test_posts_on_title", tablespace: "#{tablespace_name}"$/
|
347
347
|
end
|
@@ -369,21 +369,18 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
369
369
|
|
370
370
|
describe 'virtual columns' do
|
371
371
|
before(:all) do
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
end
|
372
|
+
skip "Not supported in this database version" unless @oracle11g_or_higher
|
373
|
+
schema_define do
|
374
|
+
create_table :test_names, :force => true do |t|
|
375
|
+
t.string :first_name
|
376
|
+
t.string :last_name
|
377
|
+
t.virtual :full_name, :as => "first_name || ', ' || last_name"
|
378
|
+
t.virtual :short_name, :as => "COALESCE(first_name, last_name)", :type => :string, :limit => 300
|
379
|
+
t.virtual :abbrev_name, :as => "SUBSTR(first_name,1,50) || ' ' || SUBSTR(last_name,1,1) || '.'", :type => "VARCHAR(100)"
|
380
|
+
t.virtual :name_ratio, :as => '(LENGTH(first_name)*10/LENGTH(last_name)*10)'
|
381
|
+
t.column :full_name_length, :virtual, :as => "length(first_name || ', ' || last_name)", :type => :integer
|
382
|
+
t.virtual :field_with_leading_space, :as => "' ' || first_name || ' '", :limit => 300, :type => :string
|
384
383
|
end
|
385
|
-
else
|
386
|
-
pending "Not supported in this database version"
|
387
384
|
end
|
388
385
|
end
|
389
386
|
|
@@ -729,7 +729,7 @@ end
|
|
729
729
|
end
|
730
730
|
|
731
731
|
it "should add a composite foreign key" do
|
732
|
-
|
732
|
+
skip "Composite foreign keys are not supported in this version"
|
733
733
|
schema_define do
|
734
734
|
add_column :test_posts, :baz_id, :integer
|
735
735
|
add_column :test_posts, :fooz_id, :integer
|
@@ -752,7 +752,7 @@ end
|
|
752
752
|
end
|
753
753
|
|
754
754
|
it "should add a composite foreign key with name" do
|
755
|
-
|
755
|
+
skip "Composite foreign keys are not supported in this version"
|
756
756
|
schema_define do
|
757
757
|
add_column :test_posts, :baz_id, :integer
|
758
758
|
add_column :test_posts, :fooz_id, :integer
|
@@ -1069,7 +1069,7 @@ end
|
|
1069
1069
|
end
|
1070
1070
|
end
|
1071
1071
|
class ::TestPost < ActiveRecord::Base; end
|
1072
|
-
TestPost.columns_hash['title'].null.should
|
1072
|
+
TestPost.columns_hash['title'].null.should be false
|
1073
1073
|
end
|
1074
1074
|
|
1075
1075
|
after(:each) do
|
@@ -1083,7 +1083,7 @@ end
|
|
1083
1083
|
change_column :test_posts, :title, :string, :null => true
|
1084
1084
|
end
|
1085
1085
|
TestPost.reset_column_information
|
1086
|
-
TestPost.columns_hash['title'].null.should
|
1086
|
+
TestPost.columns_hash['title'].null.should be true
|
1087
1087
|
end
|
1088
1088
|
|
1089
1089
|
it "should add column" do
|
@@ -1159,7 +1159,7 @@ end
|
|
1159
1159
|
|
1160
1160
|
describe 'virtual columns in create_table' do
|
1161
1161
|
before(:each) do
|
1162
|
-
|
1162
|
+
skip "Not supported in this database version" unless @oracle11g_or_higher
|
1163
1163
|
end
|
1164
1164
|
|
1165
1165
|
it 'should create virtual column with old syntax' do
|
@@ -1205,7 +1205,7 @@ end
|
|
1205
1205
|
|
1206
1206
|
describe 'virtual columns' do
|
1207
1207
|
before(:each) do
|
1208
|
-
|
1208
|
+
skip "Not supported in this database version" unless @oracle11g_or_higher
|
1209
1209
|
expr = "( numerator/NULLIF(denominator,0) )*100"
|
1210
1210
|
schema_define do
|
1211
1211
|
create_table :test_fractions, :force => true do |t|
|
@@ -92,7 +92,7 @@ describe "OracleEnhancedAdapter structure dump" do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should dump composite foreign keys" do
|
95
|
-
|
95
|
+
skip "Composite foreign keys are not supported in this version"
|
96
96
|
@conn.add_column :foos, :fooz_id, :integer
|
97
97
|
@conn.add_column :foos, :baz_id, :integer
|
98
98
|
|
@@ -150,7 +150,7 @@ describe "OracleEnhancedAdapter structure dump" do
|
|
150
150
|
end
|
151
151
|
|
152
152
|
it "should dump virtual columns" do
|
153
|
-
|
153
|
+
skip "Not supported in this database version" unless @oracle11g_or_higher
|
154
154
|
@conn.execute <<-SQL
|
155
155
|
CREATE TABLE bars (
|
156
156
|
id NUMBER(38,0) NOT NULL,
|
@@ -163,7 +163,7 @@ describe "OracleEnhancedAdapter structure dump" do
|
|
163
163
|
end
|
164
164
|
|
165
165
|
it "should dump RAW virtual columns" do
|
166
|
-
|
166
|
+
skip "Not supported in this database version" unless @oracle11g_or_higher
|
167
167
|
@conn.execute <<-SQL
|
168
168
|
CREATE TABLE bars (
|
169
169
|
id NUMBER(38,0) NOT NULL,
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# copy this file to spec/config.yaml and set appropriate values
|
2
|
+
# you can also use environment variables, see spec_helper.rb
|
3
3
|
database:
|
4
4
|
name: 'orcl'
|
5
5
|
host: '127.0.0.1'
|
@@ -7,4 +7,5 @@ database:
|
|
7
7
|
user: 'oracle_enhanced'
|
8
8
|
password: 'oracle_enhanced'
|
9
9
|
sys_password: 'admin'
|
10
|
+
non_default_tablespace: 'SYSTEM'
|
10
11
|
timezone: 'Europe/Riga'
|
data/spec/spec_helper.rb
CHANGED
@@ -22,11 +22,8 @@ elsif RUBY_ENGINE == 'jruby'
|
|
22
22
|
puts "==> Running specs with JRuby version #{JRUBY_VERSION}"
|
23
23
|
end
|
24
24
|
|
25
|
-
ENV['RAILS_GEM_VERSION'] ||= config["rails"]["gem_version"] || '4.0-master'
|
26
25
|
NO_COMPOSITE_PRIMARY_KEYS = true
|
27
26
|
|
28
|
-
puts "==> Selected Rails version #{ENV['RAILS_GEM_VERSION']}"
|
29
|
-
|
30
27
|
require 'active_record'
|
31
28
|
|
32
29
|
require 'action_dispatch'
|
@@ -166,7 +163,7 @@ SYSTEM_CONNECTION_PARAMS = {
|
|
166
163
|
:password => DATABASE_SYS_PASSWORD
|
167
164
|
}
|
168
165
|
|
169
|
-
DATABASE_NON_DEFAULT_TABLESPACE = ENV['DATABASE_NON_DEFAULT_TABLESPACE'] || "SYSTEM"
|
166
|
+
DATABASE_NON_DEFAULT_TABLESPACE = config["database"]["non_default_tablespace"] || ENV['DATABASE_NON_DEFAULT_TABLESPACE'] || "SYSTEM"
|
170
167
|
|
171
168
|
# set default time zone in TZ environment variable
|
172
169
|
# which will be used to set session time zone
|
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.6.
|
4
|
+
version: 1.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raimonds Simanovskis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jeweler
|
@@ -269,7 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
269
|
version: '0'
|
270
270
|
requirements: []
|
271
271
|
rubyforge_project:
|
272
|
-
rubygems_version: 2.4.
|
272
|
+
rubygems_version: 2.4.5.1
|
273
273
|
signing_key:
|
274
274
|
specification_version: 4
|
275
275
|
summary: Oracle enhanced adapter for ActiveRecord
|