activerecord-oracle_enhanced-adapter 1.5.6 → 1.6.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/History.md +87 -0
- data/README.md +271 -174
- data/VERSION +1 -1
- data/activerecord-oracle_enhanced-adapter.gemspec +26 -22
- data/lib/active_record/connection_adapters/{oracle_enhanced_column.rb → oracle_enhanced/column.rb} +14 -63
- data/lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb +65 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_connection.rb → oracle_enhanced/connection.rb} +2 -2
- data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +347 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_cpk.rb → oracle_enhanced/cpk.rb} +0 -0
- data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +257 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_database_tasks.rb → oracle_enhanced/database_tasks.rb} +0 -0
- data/lib/active_record/connection_adapters/oracle_enhanced/dirty.rb +40 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_jdbc_connection.rb → oracle_enhanced/jdbc_connection.rb} +0 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_oci_connection.rb → oracle_enhanced/oci_connection.rb} +0 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_procedures.rb → oracle_enhanced/procedures.rb} +0 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_schema_creation.rb → oracle_enhanced/schema_creation.rb} +17 -16
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +92 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_schema_dumper.rb → oracle_enhanced/schema_dumper.rb} +4 -32
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +543 -0
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +65 -0
- data/lib/active_record/connection_adapters/{oracle_enhanced_structure_dump.rb → oracle_enhanced/structure_dump.rb} +26 -4
- data/lib/active_record/connection_adapters/oracle_enhanced/version.rb +1 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +159 -66
- data/lib/active_record/oracle_enhanced/type/integer.rb +13 -0
- data/lib/active_record/oracle_enhanced/type/raw.rb +13 -0
- data/lib/active_record/oracle_enhanced/type/timestamp.rb +11 -0
- data/lib/activerecord-oracle_enhanced-adapter.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +6 -31
- data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +2 -2
- data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +2 -2
- data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +63 -63
- data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +7 -13
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +21 -175
- data/spec/spec_config.yaml.template +10 -0
- data/spec/spec_helper.rb +21 -10
- metadata +29 -25
- data/lib/active_record/connection_adapters/oracle_enhanced_column_dumper.rb +0 -77
- data/lib/active_record/connection_adapters/oracle_enhanced_context_index.rb +0 -350
- data/lib/active_record/connection_adapters/oracle_enhanced_database_statements.rb +0 -262
- data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +0 -45
- data/lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb +0 -197
- data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb +0 -450
- data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb +0 -258
- data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +0 -1
@@ -22,7 +22,7 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
22
22
|
schema_define do
|
23
23
|
create_table :test_posts, options do |t|
|
24
24
|
t.string :title
|
25
|
-
t.timestamps
|
25
|
+
t.timestamps null: true
|
26
26
|
end
|
27
27
|
add_index :test_posts, :title
|
28
28
|
end
|
@@ -376,7 +376,7 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
376
376
|
t.virtual :full_name, :as => "first_name || ', ' || last_name"
|
377
377
|
t.virtual :short_name, :as => "COALESCE(first_name, last_name)", :type => :string, :limit => 300
|
378
378
|
t.virtual :abbrev_name, :as => "SUBSTR(first_name,1,50) || ' ' || SUBSTR(last_name,1,1) || '.'", :type => "VARCHAR(100)"
|
379
|
-
t.virtual :name_ratio, :as=>'(LENGTH(first_name)/LENGTH(last_name))'
|
379
|
+
t.virtual :name_ratio, :as=>'(LENGTH(first_name)*10/LENGTH(last_name)*10)'
|
380
380
|
t.column :full_name_length, :virtual, :as => "length(first_name || ', ' || last_name)", :type => :integer
|
381
381
|
t.virtual :field_with_leading_space, :as => "' ' || first_name || ' '", :limit => 300, :type => :string
|
382
382
|
end
|
@@ -402,30 +402,13 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
402
402
|
end
|
403
403
|
end
|
404
404
|
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
standard_dump.should =~ /t\.virtual "name_ratio",(\s*)as:(.*),(\s*)type: :float$/
|
413
|
-
standard_dump.should =~ /t\.virtual "abbrev_name",(\s*)limit: 100,(\s*)as:(.*),(\s*)type: :string/
|
414
|
-
standard_dump.should =~ /t\.virtual "field_with_leading_space",(\s*)limit: 300,(\s*)as: "' '\|\|\\"FIRST_NAME\\"\|\|' '",(\s*)type: :string/
|
415
|
-
end
|
416
|
-
end
|
417
|
-
|
418
|
-
context "when number_datatype_coercion is :decimal" do
|
419
|
-
before { ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.stub(:number_datatype_coercion).and_return(:decimal) }
|
420
|
-
|
421
|
-
it 'should dump correctly' do
|
422
|
-
standard_dump.should =~ /t\.virtual "full_name",(\s*)limit: 512,(\s*)as: "\\"FIRST_NAME\\"\|\|', '\|\|\\"LAST_NAME\\"",(\s*)type: :string/
|
423
|
-
standard_dump.should =~ /t\.virtual "short_name",(\s*)limit: 300,(\s*)as:(.*),(\s*)type: :string/
|
424
|
-
standard_dump.should =~ /t\.virtual "full_name_length",(\s*)precision: 38,(\s*)scale: 0,(\s*)as:(.*),(\s*)type: :integer/
|
425
|
-
standard_dump.should =~ /t\.virtual "name_ratio",(\s*)as:(.*)\"$/
|
426
|
-
standard_dump.should =~ /t\.virtual "abbrev_name",(\s*)limit: 100,(\s*)as:(.*),(\s*)type: :string/
|
427
|
-
standard_dump.should =~ /t\.virtual "field_with_leading_space",(\s*)limit: 300,(\s*)as: "' '\|\|\\"FIRST_NAME\\"\|\|' '",(\s*)type: :string/
|
428
|
-
end
|
405
|
+
it 'should dump correctly' do
|
406
|
+
standard_dump.should =~ /t\.virtual "full_name",(\s*)limit: 512,(\s*)as: "\\"FIRST_NAME\\"\|\|', '\|\|\\"LAST_NAME\\"",(\s*)type: :string/
|
407
|
+
standard_dump.should =~ /t\.virtual "short_name",(\s*)limit: 300,(\s*)as:(.*),(\s*)type: :string/
|
408
|
+
standard_dump.should =~ /t\.virtual "full_name_length",(\s*)precision: 38,(\s*)scale: 0,(\s*)as:(.*),(\s*)type: :integer/
|
409
|
+
standard_dump.should =~ /t\.virtual "name_ratio",(\s*)as:(.*)\"$/ # no :type
|
410
|
+
standard_dump.should =~ /t\.virtual "abbrev_name",(\s*)limit: 100,(\s*)as:(.*),(\s*)type: :string/
|
411
|
+
standard_dump.should =~ /t\.virtual "field_with_leading_space",(\s*)limit: 300,(\s*)as: "' '\|\|\\"FIRST_NAME\\"\|\|' '",(\s*)type: :string/
|
429
412
|
end
|
430
413
|
|
431
414
|
context 'with column cache' do
|
@@ -471,160 +454,23 @@ describe "OracleEnhancedAdapter schema dump" do
|
|
471
454
|
end
|
472
455
|
end
|
473
456
|
|
474
|
-
describe "
|
475
|
-
|
457
|
+
describe ":float datatype" do
|
458
|
+
before(:each) do
|
476
459
|
schema_define do
|
477
|
-
|
478
|
-
|
479
|
-
end
|
480
|
-
|
481
|
-
let(:value_within_max_precision) { (10 ** @conn.class::NUMBER_MAX_PRECISION) - 1 }
|
482
|
-
let(:value_exceeding_max_precision) { (10 ** @conn.class::NUMBER_MAX_PRECISION) + 1 }
|
483
|
-
|
484
|
-
context "when using ActiveRecord::Schema.define and ActiveRecord::ConnectionAdapters::TableDefinition#float" do
|
485
|
-
before :each do
|
486
|
-
schema_define do
|
487
|
-
create_table :test_numbers, :force => true do |t|
|
488
|
-
t.float :value
|
489
|
-
end
|
490
|
-
end
|
491
|
-
end
|
492
|
-
|
493
|
-
context "when number_datatype_coercion is :float" do
|
494
|
-
before { ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.stub(:number_datatype_coercion).and_return(:float) }
|
495
|
-
|
496
|
-
it "should dump correctly" do
|
497
|
-
standard_dump.should =~ /t\.float "value"$/
|
498
|
-
end
|
499
|
-
end
|
500
|
-
|
501
|
-
context "when number_datatype_coercion is :decimal" do
|
502
|
-
before { ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.stub(:number_datatype_coercion).and_return(:decimal) }
|
503
|
-
|
504
|
-
it "should dump correctly" do
|
505
|
-
standard_dump.should =~ /t\.decimal "value"$/
|
460
|
+
create_table :test_floats, force: true do |t|
|
461
|
+
t.float :hourly_rate
|
506
462
|
end
|
507
463
|
end
|
508
464
|
end
|
509
465
|
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
@conn = ActiveRecord::Base.connection
|
514
|
-
@conn.execute <<-SQL
|
515
|
-
CREATE TABLE test_numbers (
|
516
|
-
id NUMBER(#{@conn.class::NUMBER_MAX_PRECISION},0) PRIMARY KEY,
|
517
|
-
value NUMBER
|
518
|
-
)
|
519
|
-
SQL
|
520
|
-
@conn.execute <<-SQL
|
521
|
-
CREATE SEQUENCE test_numbers_seq MINVALUE 1
|
522
|
-
INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE
|
523
|
-
SQL
|
524
|
-
end
|
525
|
-
|
526
|
-
context "when number_datatype_coercion is :float" do
|
527
|
-
before { ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.stub(:number_datatype_coercion).and_return(:float) }
|
528
|
-
|
529
|
-
it "should dump correctly" do
|
530
|
-
standard_dump.should =~ /t\.float "value"$/
|
531
|
-
end
|
532
|
-
|
533
|
-
describe "ActiveRecord saving" do
|
534
|
-
before :each do
|
535
|
-
class ::TestNumber < ActiveRecord::Base
|
536
|
-
self.table_name = "test_numbers"
|
537
|
-
end
|
538
|
-
end
|
539
|
-
|
540
|
-
it "should allow saving of values within NUMBER_MAX_PRECISION" do
|
541
|
-
number = TestNumber.new(value: value_within_max_precision)
|
542
|
-
number.save!
|
543
|
-
number.reload
|
544
|
-
number.value.should eq(value_within_max_precision)
|
545
|
-
end
|
546
|
-
|
547
|
-
it "should allow saving of values larger than NUMBER_MAX_PRECISION" do
|
548
|
-
number = TestNumber.new(value: value_exceeding_max_precision)
|
549
|
-
number.save!
|
550
|
-
number.reload
|
551
|
-
number.value.should eq(value_exceeding_max_precision)
|
552
|
-
end
|
553
|
-
|
554
|
-
it "should be recreatable from dump and have same properties" do
|
555
|
-
# Simulating db:schema:dump & db:test:load
|
556
|
-
2.times do
|
557
|
-
create_table_dump = standard_dump[/(create_table.+?end)/m]
|
558
|
-
|
559
|
-
schema_define do
|
560
|
-
drop_table "test_numbers"
|
561
|
-
end
|
562
|
-
|
563
|
-
schema_define(&eval("-> * { #{create_table_dump} }"))
|
564
|
-
end
|
565
|
-
|
566
|
-
number = TestNumber.new(value: value_within_max_precision)
|
567
|
-
number.save!
|
568
|
-
|
569
|
-
number2 = TestNumber.new(value: value_exceeding_max_precision)
|
570
|
-
number2.save!
|
571
|
-
end
|
572
|
-
end
|
466
|
+
after(:each) do
|
467
|
+
schema_define do
|
468
|
+
drop_table :test_floats
|
573
469
|
end
|
470
|
+
end
|
574
471
|
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
standard_dump.should =~ /t\.decimal "value"$/
|
580
|
-
end
|
581
|
-
|
582
|
-
describe "ActiveRecord saving" do
|
583
|
-
before :each do
|
584
|
-
class ::TestNumber < ActiveRecord::Base
|
585
|
-
self.table_name = "test_numbers"
|
586
|
-
end
|
587
|
-
end
|
588
|
-
|
589
|
-
it "should allow saving of values within NUMBER_MAX_PRECISION" do
|
590
|
-
number = TestNumber.new(value: value_within_max_precision)
|
591
|
-
number.save!
|
592
|
-
number.reload
|
593
|
-
number.value.should eq(value_within_max_precision)
|
594
|
-
end
|
595
|
-
|
596
|
-
it "should allow saving of values larger than NUMBER_MAX_PRECISION" do
|
597
|
-
number = TestNumber.new(value: value_exceeding_max_precision)
|
598
|
-
number.save!
|
599
|
-
number.reload
|
600
|
-
number.value.should eq(value_exceeding_max_precision)
|
601
|
-
end
|
602
|
-
|
603
|
-
it "should be recreatable from dump and have same properties" do
|
604
|
-
# Simulating db:schema:dump & db:test:load
|
605
|
-
2.times do |i|
|
606
|
-
create_table_dump = standard_dump[/(create_table.+?end)/m]
|
607
|
-
|
608
|
-
schema_define do
|
609
|
-
drop_table "test_numbers"
|
610
|
-
end
|
611
|
-
|
612
|
-
schema_define(&eval("-> * { #{create_table_dump} }"))
|
613
|
-
end
|
614
|
-
|
615
|
-
number = TestNumber.new(value: value_within_max_precision)
|
616
|
-
number.save!
|
617
|
-
|
618
|
-
# Raises 'ORA-01438' as :value column type isn't FLOAT'ish
|
619
|
-
number2 = TestNumber.new(value: value_exceeding_max_precision)
|
620
|
-
lambda do
|
621
|
-
number2.save!
|
622
|
-
end.should raise_error() { |e| e.message.should =~ /ORA-01438/ }
|
623
|
-
end
|
624
|
-
end
|
625
|
-
end # context (:decimal)
|
626
|
-
|
627
|
-
end # context (handwritten)
|
628
|
-
end # describe (NUMBER columns)
|
629
|
-
|
472
|
+
it "should dump float type correctly" do
|
473
|
+
standard_dump.should =~ /t\.float "hourly_rate"$/
|
474
|
+
end
|
475
|
+
end
|
630
476
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
-
require
|
1
|
+
require "rubygems"
|
2
2
|
require "bundler"
|
3
|
+
require "yaml"
|
3
4
|
Bundler.setup(:default, :development)
|
4
5
|
|
5
6
|
$:.unshift(File.expand_path('../../lib', __FILE__))
|
7
|
+
config_path = File.expand_path('../spec_config.yaml', __FILE__)
|
8
|
+
if File.exist?(config_path)
|
9
|
+
puts "==> Loading config from #{config_path}"
|
10
|
+
config = YAML.load_file(config_path)
|
11
|
+
else
|
12
|
+
puts "==> Loading config from ENV or use default"
|
13
|
+
config = {"rails" => {}, "database" => {}}
|
14
|
+
end
|
6
15
|
|
7
16
|
require 'rspec'
|
8
17
|
|
@@ -13,10 +22,10 @@ elsif RUBY_ENGINE == 'jruby'
|
|
13
22
|
puts "==> Running specs with JRuby version #{JRUBY_VERSION}"
|
14
23
|
end
|
15
24
|
|
16
|
-
ENV['RAILS_GEM_VERSION'] ||= '4.0-master'
|
25
|
+
ENV['RAILS_GEM_VERSION'] ||= config["rails"]["gem_version"] || '4.0-master'
|
17
26
|
NO_COMPOSITE_PRIMARY_KEYS = true
|
18
27
|
|
19
|
-
puts "==>
|
28
|
+
puts "==> Selected Rails version #{ENV['RAILS_GEM_VERSION']}"
|
20
29
|
|
21
30
|
require 'active_record'
|
22
31
|
|
@@ -32,6 +41,8 @@ require 'logger'
|
|
32
41
|
require 'active_record/connection_adapters/oracle_enhanced_adapter'
|
33
42
|
require 'ruby-plsql'
|
34
43
|
|
44
|
+
puts "==> Effective ActiveRecord version #{ActiveRecord::VERSION::STRING}"
|
45
|
+
|
35
46
|
module LoggerSpecHelper
|
36
47
|
def set_logger
|
37
48
|
@logger = MockLogger.new
|
@@ -109,12 +120,12 @@ module SchemaSpecHelper
|
|
109
120
|
end
|
110
121
|
end
|
111
122
|
|
112
|
-
DATABASE_NAME
|
113
|
-
DATABASE_HOST
|
114
|
-
DATABASE_PORT
|
115
|
-
DATABASE_USER
|
116
|
-
DATABASE_PASSWORD
|
117
|
-
DATABASE_SYS_PASSWORD = ENV['DATABASE_SYS_PASSWORD'] || 'admin'
|
123
|
+
DATABASE_NAME = config["database"]["name"] || ENV['DATABASE_NAME'] || 'orcl'
|
124
|
+
DATABASE_HOST = config["database"]["host"] || ENV['DATABASE_HOST'] || "127.0.0.1"
|
125
|
+
DATABASE_PORT = config["database"]["port"] || ENV['DATABASE_PORT'] || 1521
|
126
|
+
DATABASE_USER = config["database"]["user"] || ENV['DATABASE_USER'] || 'oracle_enhanced'
|
127
|
+
DATABASE_PASSWORD = config["database"]["password"] || ENV['DATABASE_PASSWORD'] || 'oracle_enhanced'
|
128
|
+
DATABASE_SYS_PASSWORD = config["database"]["sys_password"] || ENV['DATABASE_SYS_PASSWORD'] || 'admin'
|
118
129
|
|
119
130
|
CONNECTION_PARAMS = {
|
120
131
|
:adapter => "oracle_enhanced",
|
@@ -148,7 +159,7 @@ DATABASE_NON_DEFAULT_TABLESPACE = ENV['DATABASE_NON_DEFAULT_TABLESPACE'] || "SYS
|
|
148
159
|
|
149
160
|
# set default time zone in TZ environment variable
|
150
161
|
# which will be used to set session time zone
|
151
|
-
ENV['TZ'] ||= 'Europe/Riga'
|
162
|
+
ENV['TZ'] ||= config["timezone"] || 'Europe/Riga'
|
152
163
|
|
153
164
|
# ActiveRecord::Base.logger = Logger.new(STDOUT)
|
154
165
|
|
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.
|
4
|
+
version: 1.6.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raimonds Simanovskis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jeweler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -211,25 +211,28 @@ files:
|
|
211
211
|
- VERSION
|
212
212
|
- activerecord-oracle_enhanced-adapter.gemspec
|
213
213
|
- lib/active_record/connection_adapters/emulation/oracle_adapter.rb
|
214
|
+
- lib/active_record/connection_adapters/oracle_enhanced/column.rb
|
215
|
+
- lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
|
216
|
+
- lib/active_record/connection_adapters/oracle_enhanced/connection.rb
|
217
|
+
- lib/active_record/connection_adapters/oracle_enhanced/context_index.rb
|
218
|
+
- lib/active_record/connection_adapters/oracle_enhanced/cpk.rb
|
219
|
+
- lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb
|
220
|
+
- lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb
|
221
|
+
- lib/active_record/connection_adapters/oracle_enhanced/dirty.rb
|
222
|
+
- lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb
|
223
|
+
- lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb
|
224
|
+
- lib/active_record/connection_adapters/oracle_enhanced/procedures.rb
|
225
|
+
- lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb
|
226
|
+
- lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb
|
227
|
+
- lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb
|
228
|
+
- lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb
|
229
|
+
- lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb
|
230
|
+
- lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb
|
231
|
+
- lib/active_record/connection_adapters/oracle_enhanced/version.rb
|
214
232
|
- lib/active_record/connection_adapters/oracle_enhanced_adapter.rb
|
215
|
-
- lib/active_record/
|
216
|
-
- lib/active_record/
|
217
|
-
- lib/active_record/
|
218
|
-
- lib/active_record/connection_adapters/oracle_enhanced_context_index.rb
|
219
|
-
- lib/active_record/connection_adapters/oracle_enhanced_cpk.rb
|
220
|
-
- lib/active_record/connection_adapters/oracle_enhanced_database_statements.rb
|
221
|
-
- lib/active_record/connection_adapters/oracle_enhanced_database_tasks.rb
|
222
|
-
- lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
|
223
|
-
- lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb
|
224
|
-
- lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb
|
225
|
-
- lib/active_record/connection_adapters/oracle_enhanced_procedures.rb
|
226
|
-
- lib/active_record/connection_adapters/oracle_enhanced_schema_creation.rb
|
227
|
-
- lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb
|
228
|
-
- lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb
|
229
|
-
- lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb
|
230
|
-
- lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb
|
231
|
-
- lib/active_record/connection_adapters/oracle_enhanced_structure_dump.rb
|
232
|
-
- lib/active_record/connection_adapters/oracle_enhanced_version.rb
|
233
|
+
- lib/active_record/oracle_enhanced/type/integer.rb
|
234
|
+
- lib/active_record/oracle_enhanced/type/raw.rb
|
235
|
+
- lib/active_record/oracle_enhanced/type/timestamp.rb
|
233
236
|
- lib/activerecord-oracle_enhanced-adapter.rb
|
234
237
|
- spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
|
235
238
|
- spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb
|
@@ -244,6 +247,7 @@ files:
|
|
244
247
|
- spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb
|
245
248
|
- spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb
|
246
249
|
- spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb
|
250
|
+
- spec/spec_config.yaml.template
|
247
251
|
- spec/spec_helper.rb
|
248
252
|
homepage: http://github.com/rsim/oracle-enhanced
|
249
253
|
licenses:
|
@@ -260,12 +264,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
260
264
|
version: '0'
|
261
265
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
262
266
|
requirements:
|
263
|
-
- - "
|
267
|
+
- - ">"
|
264
268
|
- !ruby/object:Gem::Version
|
265
|
-
version:
|
269
|
+
version: 1.3.1
|
266
270
|
requirements: []
|
267
271
|
rubyforge_project:
|
268
|
-
rubygems_version: 2.4.
|
272
|
+
rubygems_version: 2.4.8
|
269
273
|
signing_key:
|
270
274
|
specification_version: 4
|
271
275
|
summary: Oracle enhanced adapter for ActiveRecord
|
@@ -1,77 +0,0 @@
|
|
1
|
-
module ActiveRecord #:nodoc:
|
2
|
-
module ConnectionAdapters #:nodoc:
|
3
|
-
module OracleEnhancedColumnDumper #:nodoc:
|
4
|
-
|
5
|
-
def self.included(base) #:nodoc:
|
6
|
-
base.class_eval do
|
7
|
-
private
|
8
|
-
alias_method_chain :column_spec, :oracle_enhanced
|
9
|
-
alias_method_chain :prepare_column_options, :oracle_enhanced
|
10
|
-
alias_method_chain :migration_keys, :oracle_enhanced
|
11
|
-
|
12
|
-
def oracle_enhanced_adapter?
|
13
|
-
# return original method if not using 'OracleEnhanced'
|
14
|
-
if (rails_env = defined?(Rails.env) ? Rails.env : (defined?(RAILS_ENV) ? RAILS_ENV : nil)) &&
|
15
|
-
ActiveRecord::Base.configurations[rails_env] &&
|
16
|
-
ActiveRecord::Base.configurations[rails_env]['adapter'] != 'oracle_enhanced'
|
17
|
-
return false
|
18
|
-
else
|
19
|
-
return true
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def column_spec_with_oracle_enhanced(column, types)
|
26
|
-
# return original method if not using 'OracleEnhanced'
|
27
|
-
return column_spec_without_oracle_enhanced(column, types) unless oracle_enhanced_adapter?
|
28
|
-
|
29
|
-
spec = prepare_column_options(column, types)
|
30
|
-
(spec.keys - [:name, :type]).each do |k|
|
31
|
-
key_s = (k == :virtual_type ? "type: " : "#{k.to_s}: ")
|
32
|
-
spec[k] = key_s + spec[k]
|
33
|
-
end
|
34
|
-
spec
|
35
|
-
end
|
36
|
-
|
37
|
-
def prepare_column_options_with_oracle_enhanced(column, types)
|
38
|
-
# return original method if not using 'OracleEnhanced'
|
39
|
-
return prepare_column_options_without_oracle_enhanced(column, types) unless oracle_enhanced_adapter?
|
40
|
-
|
41
|
-
spec = {}
|
42
|
-
|
43
|
-
spec[:name] = column.name.inspect
|
44
|
-
spec[:type] = column.virtual? ? 'virtual' : column.type.to_s
|
45
|
-
spec[:limit] = column.limit.inspect if column.limit != types[column.type][:limit] && column.type != :decimal
|
46
|
-
spec[:precision] = column.precision.inspect if !column.precision.nil?
|
47
|
-
spec[:scale] = column.scale.inspect if !column.scale.nil?
|
48
|
-
spec[:null] = 'false' if !column.null
|
49
|
-
spec[:as] = column.virtual_column_data_default if column.virtual?
|
50
|
-
spec[:default] = default_string(column.default) if column.has_default? && !column.virtual?
|
51
|
-
|
52
|
-
if column.virtual?
|
53
|
-
# Supports backwards compatibility with older OracleEnhancedAdapter versions where 'NUMBER' virtual column type is not included in dump
|
54
|
-
if column.sql_type != "NUMBER" || ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.number_datatype_coercion != :decimal
|
55
|
-
spec[:virtual_type] = column.type.inspect
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
spec
|
60
|
-
end
|
61
|
-
|
62
|
-
def migration_keys_with_oracle_enhanced
|
63
|
-
# TODO `& column_specs.map(&:keys).flatten` should be exetuted here
|
64
|
-
# return original method if not using 'OracleEnhanced'
|
65
|
-
return migration_keys_without_oracle_enhanced unless oracle_enhanced_adapter?
|
66
|
-
|
67
|
-
[:name, :limit, :precision, :scale, :default, :null, :as, :virtual_type]
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
ActiveRecord::ConnectionAdapters::ColumnDumper.class_eval do
|
76
|
-
include ActiveRecord::ConnectionAdapters::OracleEnhancedColumnDumper
|
77
|
-
end
|