activerecord-oracle_enhanced-adapter 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +34 -0
- data/README.rdoc +10 -5
- data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +1 -1
- data/lib/active_record/connection_adapters/oracle_enhanced.rake +4 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +534 -170
- data/lib/active_record/connection_adapters/oracle_enhanced_connection.rb +53 -3
- data/lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb +10 -10
- data/lib/active_record/connection_adapters/oracle_enhanced_cpk.rb +3 -3
- data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +3 -3
- data/lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb +86 -58
- data/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb +105 -68
- data/lib/active_record/connection_adapters/oracle_enhanced_procedures.rb +27 -1
- data/lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb +164 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb +122 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb +224 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_tasks.rb +2 -2
- data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +230 -455
- data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +37 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +6 -2
- data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +21 -4
- data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +63 -0
- data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +1 -3
- data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +1 -1
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +255 -0
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_spec.rb +720 -0
- data/spec/spec_helper.rb +38 -7
- metadata +13 -15
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
2
|
|
3
3
|
describe "OracleEnhancedConnection create connection" do
|
4
4
|
|
@@ -38,6 +38,42 @@ describe "OracleEnhancedConnection create connection" do
|
|
38
38
|
|
39
39
|
end
|
40
40
|
|
41
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
42
|
+
|
43
|
+
describe "OracleEnhancedConnection create JDBC connection" do
|
44
|
+
after(:each) do
|
45
|
+
@conn.logoff if @conn.active?
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should create new connection using :url" do
|
49
|
+
params = CONNECTION_PARAMS.dup
|
50
|
+
params[:url] = "jdbc:oracle:thin:@#{DATABASE_HOST}:#{DATABASE_PORT}:#{DATABASE_NAME}"
|
51
|
+
params[:host] = nil
|
52
|
+
params[:database] = nil
|
53
|
+
@conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
|
54
|
+
@conn.should be_active
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should create new connection using :url and tnsnames alias" do
|
58
|
+
params = CONNECTION_PARAMS.dup
|
59
|
+
params[:url] = "jdbc:oracle:thin:@#{DATABASE_NAME}"
|
60
|
+
params[:host] = nil
|
61
|
+
params[:database] = nil
|
62
|
+
@conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
|
63
|
+
@conn.should be_active
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should create new connection using just tnsnames alias" do
|
67
|
+
params = CONNECTION_PARAMS.dup
|
68
|
+
params[:host] = nil
|
69
|
+
@conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
|
70
|
+
@conn.should be_active
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
41
77
|
describe "OracleEnhancedConnection SQL execution" do
|
42
78
|
|
43
79
|
before(:all) do
|
@@ -1,4 +1,6 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
unless defined?(NO_COMPOSITE_PRIMARY_KEYS)
|
2
4
|
|
3
5
|
describe "OracleEnhancedAdapter composite_primary_keys support" do
|
4
6
|
|
@@ -100,4 +102,6 @@ describe "OracleEnhancedAdapter composite_primary_keys support" do
|
|
100
102
|
|
101
103
|
# Other testing was done based on composite_primary_keys tests
|
102
104
|
|
103
|
-
end
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
2
|
|
3
3
|
describe "OracleEnhancedAdapter date type detection based on column names" do
|
4
4
|
before(:all) do
|
@@ -83,11 +83,9 @@ describe "OracleEnhancedAdapter date type detection based on column names" do
|
|
83
83
|
|
84
84
|
describe "/ DATE values from ActiveRecord model" do
|
85
85
|
before(:each) do
|
86
|
-
ActiveRecord::Base.connection.clear_types_for_columns
|
87
86
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = false
|
88
87
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates = false
|
89
88
|
class ::TestEmployee < ActiveRecord::Base
|
90
|
-
set_table_name "hr.test_employees"
|
91
89
|
set_primary_key :employee_id
|
92
90
|
end
|
93
91
|
end
|
@@ -107,6 +105,7 @@ describe "OracleEnhancedAdapter date type detection based on column names" do
|
|
107
105
|
after(:each) do
|
108
106
|
# @employee.destroy if @employee
|
109
107
|
Object.send(:remove_const, "TestEmployee")
|
108
|
+
ActiveRecord::Base.connection.clear_types_for_columns
|
110
109
|
end
|
111
110
|
|
112
111
|
it "should return Time value from DATE column if emulate_dates_by_column_name is false" do
|
@@ -151,6 +150,16 @@ describe "OracleEnhancedAdapter date type detection based on column names" do
|
|
151
150
|
@employee.hire_date.class.should == Date
|
152
151
|
end
|
153
152
|
|
153
|
+
it "should see set_date_columns values in different connection" do
|
154
|
+
class ::TestEmployee < ActiveRecord::Base
|
155
|
+
set_date_columns :hire_date
|
156
|
+
end
|
157
|
+
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = false
|
158
|
+
# establish other connection
|
159
|
+
other_conn = ActiveRecord::Base.oracle_enhanced_connection(CONNECTION_PARAMS)
|
160
|
+
other_conn.get_type_for_column('test_employees', 'hire_date').should == :date
|
161
|
+
end
|
162
|
+
|
154
163
|
it "should return Time value from DATE column if emulate_dates_by_column_name is true but column is defined as datetime" do
|
155
164
|
class ::TestEmployee < ActiveRecord::Base
|
156
165
|
set_datetime_columns :hire_date
|
@@ -837,6 +846,7 @@ describe "OracleEnhancedAdapter handling of CLOB columns" do
|
|
837
846
|
:last_name => "Last"
|
838
847
|
)
|
839
848
|
@employee.should be_valid
|
849
|
+
TestEmployee.serialized_attributes.delete('comments')
|
840
850
|
end
|
841
851
|
|
842
852
|
it "should order by CLOB column" do
|
@@ -852,7 +862,14 @@ describe "OracleEnhancedAdapter handling of CLOB columns" do
|
|
852
862
|
TestEmployee.find(:all, :order => :comments).should_not be_empty
|
853
863
|
TestEmployee.find(:all, :order => " first_name DESC, last_name ASC ").should_not be_empty
|
854
864
|
end
|
855
|
-
|
865
|
+
|
866
|
+
it "should accept Symbol value for CLOB column" do
|
867
|
+
@employee = TestEmployee.create!(
|
868
|
+
:comments => :test_comment
|
869
|
+
)
|
870
|
+
@employee.should be_valid
|
871
|
+
end
|
872
|
+
|
856
873
|
end
|
857
874
|
|
858
875
|
describe "OracleEnhancedAdapter handling of BLOB columns" do
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe "OracleEnhancedAdapter logging dbms_output from plsql" do
|
4
|
+
include LoggerSpecHelper
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
@buffer = StringIO.new
|
8
|
+
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
9
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
10
|
+
CREATE or REPLACE
|
11
|
+
FUNCTION MORE_THAN_FIVE_CHARACTERS_LONG (some_text VARCHAR2) RETURN INTEGER
|
12
|
+
AS
|
13
|
+
longer_than_five INTEGER;
|
14
|
+
BEGIN
|
15
|
+
dbms_output.put_line('before the if -' || some_text || '-');
|
16
|
+
IF length(some_text) > 5 THEN
|
17
|
+
dbms_output.put_line('it is longer than 5');
|
18
|
+
longer_than_five := 1;
|
19
|
+
ELSE
|
20
|
+
dbms_output.put_line('it is 5 or shorter');
|
21
|
+
longer_than_five := 0;
|
22
|
+
END IF;
|
23
|
+
dbms_output.put_line('about to return: ' || longer_than_five);
|
24
|
+
RETURN longer_than_five;
|
25
|
+
END;
|
26
|
+
SQL
|
27
|
+
end
|
28
|
+
|
29
|
+
before(:each) do
|
30
|
+
@buffer = StringIO.new
|
31
|
+
log_to @buffer
|
32
|
+
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
33
|
+
@conn = ActiveRecord::Base.connection
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should NOT log dbms output when dbms output is disabled" do
|
37
|
+
@conn.disable_dbms_output
|
38
|
+
|
39
|
+
@conn.select_all("select more_than_five_characters_long('hi there') is_it_long from dual").should == [{'is_it_long'=>1}]
|
40
|
+
|
41
|
+
@buffer.string.should_not match(/^DBMS_OUTPUT/)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should log dbms output lines to the rails log" do
|
45
|
+
@conn.enable_dbms_output
|
46
|
+
|
47
|
+
@conn.select_all("select more_than_five_characters_long('hi there') is_it_long from dual").should == [{'is_it_long'=>1}]
|
48
|
+
|
49
|
+
@buffer.string.should match(/^DBMS_OUTPUT: before the if -hi there-$/)
|
50
|
+
@buffer.string.should match(/^DBMS_OUTPUT: it is longer than 5$/)
|
51
|
+
@buffer.string.should match(/^DBMS_OUTPUT: about to return: 1$/)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should log dbms output lines to the rails log" do
|
55
|
+
@conn.enable_dbms_output
|
56
|
+
|
57
|
+
@conn.select_all("select more_than_five_characters_long('short') is_it_long from dual").should == [{'is_it_long'=>0}]
|
58
|
+
|
59
|
+
@buffer.string.should match(/^DBMS_OUTPUT: before the if -short-$/)
|
60
|
+
@buffer.string.should match(/^DBMS_OUTPUT: it is 5 or shorter$/)
|
61
|
+
@buffer.string.should match(/^DBMS_OUTPUT: about to return: 0$/)
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,255 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe "OracleEnhancedAdapter original schema dump" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
if !defined?(RUBY_ENGINE)
|
7
|
+
if ActiveRecord::Base.respond_to?(:oracle_connection)
|
8
|
+
@old_conn = ActiveRecord::Base.oracle_connection(CONNECTION_PARAMS)
|
9
|
+
@old_conn.class.should == ActiveRecord::ConnectionAdapters::OracleAdapter
|
10
|
+
end
|
11
|
+
elsif RUBY_ENGINE == 'jruby'
|
12
|
+
@old_conn = ActiveRecord::Base.jdbc_connection(JDBC_CONNECTION_PARAMS)
|
13
|
+
@old_conn.class.should == ActiveRecord::ConnectionAdapters::JdbcAdapter
|
14
|
+
end
|
15
|
+
|
16
|
+
@new_conn = ActiveRecord::Base.oracle_enhanced_connection(CONNECTION_PARAMS)
|
17
|
+
@new_conn.class.should == ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter
|
18
|
+
end
|
19
|
+
|
20
|
+
after(:all) do
|
21
|
+
# Workaround for undefining callback that was defined by JDBC adapter
|
22
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
23
|
+
ActiveRecord::Base.class_eval do
|
24
|
+
def after_save_with_oracle_lob
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
if !defined?(RUBY_ENGINE) && ActiveRecord::Base.respond_to?(:oracle_connection) || defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
32
|
+
it "should return the same tables list as original oracle adapter" do
|
33
|
+
@new_conn.tables.sort.should == @old_conn.tables.sort
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return the same index list as original oracle adapter" do
|
37
|
+
@new_conn.indexes('employees').sort_by(&:name).should == @old_conn.indexes('employees').sort_by(&:name)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return the same pk_and_sequence_for as original oracle adapter" do
|
41
|
+
if @old_conn.respond_to?(:pk_and_sequence_for)
|
42
|
+
@new_conn.tables.each do |t|
|
43
|
+
@new_conn.pk_and_sequence_for(t).should == @old_conn.pk_and_sequence_for(t)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return the same structure dump as original oracle adapter" do
|
49
|
+
@new_conn.structure_dump.split(";\n\n").sort.should == @old_conn.structure_dump.split(";\n\n").sort
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should return the same structure drop as original oracle adapter" do
|
53
|
+
@new_conn.structure_drop.split(";\n\n").sort.should == @old_conn.structure_drop.split(";\n\n").sort
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "OracleEnhancedAdapter schema dump" do
|
60
|
+
include SchemaSpecHelper
|
61
|
+
|
62
|
+
before(:all) do
|
63
|
+
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
64
|
+
@conn = ActiveRecord::Base.connection
|
65
|
+
end
|
66
|
+
|
67
|
+
def standard_dump
|
68
|
+
stream = StringIO.new
|
69
|
+
ActiveRecord::SchemaDumper.ignore_tables = []
|
70
|
+
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
|
71
|
+
stream.string
|
72
|
+
end
|
73
|
+
|
74
|
+
def create_test_posts_table(options = {})
|
75
|
+
options.merge! :force => true
|
76
|
+
schema_define do
|
77
|
+
create_table :test_posts, options do |t|
|
78
|
+
t.string :title
|
79
|
+
end
|
80
|
+
add_index :test_posts, :title
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def drop_test_posts_table
|
85
|
+
schema_define do
|
86
|
+
drop_table :test_posts
|
87
|
+
end
|
88
|
+
rescue
|
89
|
+
nil
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "table prefixes and suffixes" do
|
93
|
+
after(:each) do
|
94
|
+
drop_test_posts_table
|
95
|
+
@conn.drop_table(ActiveRecord::Migrator.schema_migrations_table_name) if @conn.table_exists?(ActiveRecord::Migrator.schema_migrations_table_name)
|
96
|
+
ActiveRecord::Base.table_name_prefix = ''
|
97
|
+
ActiveRecord::Base.table_name_suffix = ''
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should remove table prefix in schema dump" do
|
101
|
+
ActiveRecord::Base.table_name_prefix = 'xxx_'
|
102
|
+
create_test_posts_table
|
103
|
+
standard_dump.should =~ /create_table "test_posts".*add_index "test_posts"/m
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should remove table suffix in schema dump" do
|
107
|
+
ActiveRecord::Base.table_name_suffix = '_xxx'
|
108
|
+
create_test_posts_table
|
109
|
+
standard_dump.should =~ /create_table "test_posts".*add_index "test_posts"/m
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should not include schema_migrations table with prefix in schema dump" do
|
113
|
+
ActiveRecord::Base.table_name_prefix = 'xxx_'
|
114
|
+
@conn.initialize_schema_migrations_table
|
115
|
+
standard_dump.should_not =~ /schema_migrations/
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should not include schema_migrations table with suffix in schema dump" do
|
119
|
+
ActiveRecord::Base.table_name_suffix = '_xxx'
|
120
|
+
@conn.initialize_schema_migrations_table
|
121
|
+
standard_dump.should_not =~ /schema_migrations/
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "table with non-default primary key" do
|
127
|
+
after(:each) do
|
128
|
+
drop_test_posts_table
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should include non-default primary key in schema dump" do
|
132
|
+
create_test_posts_table(:primary_key => 'post_id')
|
133
|
+
standard_dump.should =~ /create_table "test_posts", :primary_key => "post_id"/
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "table with primary key trigger" do
|
139
|
+
|
140
|
+
after(:each) do
|
141
|
+
drop_test_posts_table
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should include primary key trigger in schema dump" do
|
145
|
+
create_test_posts_table(:primary_key_trigger => true)
|
146
|
+
standard_dump.should =~ /create_table "test_posts".*add_primary_key_trigger "test_posts"/m
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should include primary key trigger with non-default primary key in schema dump" do
|
150
|
+
create_test_posts_table(:primary_key_trigger => true, :primary_key => 'post_id')
|
151
|
+
standard_dump.should =~ /create_table "test_posts", :primary_key => "post_id".*add_primary_key_trigger "test_posts", :primary_key => "post_id"/m
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "foreign key constraints" do
|
157
|
+
before(:all) do
|
158
|
+
schema_define do
|
159
|
+
create_table :test_posts, :force => true do |t|
|
160
|
+
t.string :title
|
161
|
+
end
|
162
|
+
create_table :test_comments, :force => true do |t|
|
163
|
+
t.string :body, :limit => 4000
|
164
|
+
t.references :test_post
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
after(:each) do
|
170
|
+
schema_define do
|
171
|
+
remove_foreign_key :test_comments, :test_posts
|
172
|
+
end
|
173
|
+
end
|
174
|
+
after(:all) do
|
175
|
+
schema_define do
|
176
|
+
drop_table :test_comments rescue nil
|
177
|
+
drop_table :test_posts rescue nil
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
it "should include foreign key in schema dump" do
|
182
|
+
schema_define do
|
183
|
+
add_foreign_key :test_comments, :test_posts
|
184
|
+
end
|
185
|
+
standard_dump.should =~ /add_foreign_key "test_comments", "test_posts", :name => "test_comments_test_post_id_fk"/
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should include foreign key with delete dependency in schema dump" do
|
189
|
+
schema_define do
|
190
|
+
add_foreign_key :test_comments, :test_posts, :dependent => :delete
|
191
|
+
end
|
192
|
+
standard_dump.should =~ /add_foreign_key "test_comments", "test_posts", :name => "test_comments_test_post_id_fk", :dependent => :delete/
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should include foreign key with nullify dependency in schema dump" do
|
196
|
+
schema_define do
|
197
|
+
add_foreign_key :test_comments, :test_posts, :dependent => :nullify
|
198
|
+
end
|
199
|
+
standard_dump.should =~ /add_foreign_key "test_comments", "test_posts", :name => "test_comments_test_post_id_fk", :dependent => :nullify/
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
describe "synonyms" do
|
205
|
+
after(:each) do
|
206
|
+
schema_define do
|
207
|
+
remove_synonym :test_synonym
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
it "should include synonym to other schema table in schema dump" do
|
212
|
+
schema_define do
|
213
|
+
add_synonym :test_synonym, "schema_name.table_name", :force => true
|
214
|
+
end
|
215
|
+
standard_dump.should =~ /add_synonym "test_synonym", "schema_name.table_name", :force => true/
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should include synonym to other database table in schema dump" do
|
219
|
+
schema_define do
|
220
|
+
add_synonym :test_synonym, "table_name@link_name", :force => true
|
221
|
+
end
|
222
|
+
standard_dump.should =~ /add_synonym "test_synonym", "table_name@link_name", :force => true/
|
223
|
+
end
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
end
|
228
|
+
|
229
|
+
describe "OracleEnhancedAdapter structure dump" do
|
230
|
+
before(:all) do
|
231
|
+
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
232
|
+
@conn = ActiveRecord::Base.connection
|
233
|
+
end
|
234
|
+
|
235
|
+
describe "database stucture dump extentions" do
|
236
|
+
before(:all) do
|
237
|
+
@conn.execute <<-SQL
|
238
|
+
CREATE TABLE nvarchartable (
|
239
|
+
unq_nvarchar NVARCHAR2(255) DEFAULT NULL
|
240
|
+
)
|
241
|
+
SQL
|
242
|
+
end
|
243
|
+
|
244
|
+
after(:all) do
|
245
|
+
@conn.execute "DROP TABLE nvarchartable"
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should return the character size of nvarchar fields" do
|
249
|
+
if /.*unq_nvarchar nvarchar2\((\d+)\).*/ =~ @conn.structure_dump
|
250
|
+
"#$1".should == "255"
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
end
|