activerecord-oracle_enhanced-adapter 1.4.3 → 5.2.0

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.
Files changed (100) hide show
  1. checksums.yaml +5 -5
  2. data/History.md +1162 -2
  3. data/README.md +567 -155
  4. data/VERSION +1 -1
  5. data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +3 -1
  6. data/lib/active_record/connection_adapters/oracle_enhanced/column.rb +19 -0
  7. data/lib/active_record/connection_adapters/oracle_enhanced/connection.rb +132 -0
  8. data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +345 -0
  9. data/lib/active_record/connection_adapters/oracle_enhanced/database_limits.rb +52 -0
  10. data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +280 -0
  11. data/lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb +64 -0
  12. data/lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb +59 -0
  13. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +538 -0
  14. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb +38 -0
  15. data/lib/active_record/connection_adapters/oracle_enhanced/lob.rb +46 -0
  16. data/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +435 -0
  17. data/lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb +44 -0
  18. data/lib/active_record/connection_adapters/oracle_enhanced/procedures.rb +196 -0
  19. data/lib/active_record/connection_adapters/oracle_enhanced/quoting.rb +164 -0
  20. data/lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb +95 -0
  21. data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +79 -0
  22. data/lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb +194 -0
  23. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +709 -0
  24. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +28 -0
  25. data/lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb +353 -0
  26. data/lib/active_record/connection_adapters/oracle_enhanced/type_metadata.rb +33 -0
  27. data/lib/active_record/connection_adapters/oracle_enhanced/version.rb +3 -0
  28. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +385 -1083
  29. data/lib/active_record/type/oracle_enhanced/boolean.rb +20 -0
  30. data/lib/active_record/type/oracle_enhanced/integer.rb +15 -0
  31. data/lib/active_record/type/oracle_enhanced/json.rb +10 -0
  32. data/lib/active_record/type/oracle_enhanced/national_character_string.rb +26 -0
  33. data/lib/active_record/type/oracle_enhanced/national_character_text.rb +36 -0
  34. data/lib/active_record/type/oracle_enhanced/raw.rb +25 -0
  35. data/lib/active_record/type/oracle_enhanced/string.rb +29 -0
  36. data/lib/active_record/type/oracle_enhanced/text.rb +32 -0
  37. data/lib/active_record/type/oracle_enhanced/timestampltz.rb +25 -0
  38. data/lib/active_record/type/oracle_enhanced/timestamptz.rb +25 -0
  39. data/lib/activerecord-oracle_enhanced-adapter.rb +5 -13
  40. data/spec/active_record/connection_adapters/{oracle_enhanced_emulate_oracle_adapter_spec.rb → emulation/oracle_adapter_spec.rb} +5 -4
  41. data/spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb +469 -0
  42. data/spec/active_record/connection_adapters/{oracle_enhanced_context_index_spec.rb → oracle_enhanced/context_index_spec.rb} +140 -128
  43. data/spec/active_record/connection_adapters/oracle_enhanced/database_tasks_spec.rb +112 -0
  44. data/spec/active_record/connection_adapters/{oracle_enhanced_dbms_output_spec.rb → oracle_enhanced/dbms_output_spec.rb} +13 -13
  45. data/spec/active_record/connection_adapters/oracle_enhanced/procedures_spec.rb +365 -0
  46. data/spec/active_record/connection_adapters/oracle_enhanced/quoting_spec.rb +196 -0
  47. data/spec/active_record/connection_adapters/oracle_enhanced/schema_dumper_spec.rb +492 -0
  48. data/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb +1433 -0
  49. data/spec/active_record/connection_adapters/oracle_enhanced/structure_dump_spec.rb +478 -0
  50. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +385 -550
  51. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +92 -1249
  52. data/spec/active_record/oracle_enhanced/type/binary_spec.rb +119 -0
  53. data/spec/active_record/oracle_enhanced/type/boolean_spec.rb +208 -0
  54. data/spec/active_record/oracle_enhanced/type/dirty_spec.rb +139 -0
  55. data/spec/active_record/oracle_enhanced/type/float_spec.rb +48 -0
  56. data/spec/active_record/oracle_enhanced/type/integer_spec.rb +91 -0
  57. data/spec/active_record/oracle_enhanced/type/json_spec.rb +57 -0
  58. data/spec/active_record/oracle_enhanced/type/national_character_string_spec.rb +55 -0
  59. data/spec/active_record/oracle_enhanced/type/national_character_text_spec.rb +230 -0
  60. data/spec/active_record/oracle_enhanced/type/raw_spec.rb +122 -0
  61. data/spec/active_record/oracle_enhanced/type/text_spec.rb +229 -0
  62. data/spec/active_record/oracle_enhanced/type/timestamp_spec.rb +75 -0
  63. data/spec/spec_config.yaml.template +11 -0
  64. data/spec/spec_helper.rb +100 -93
  65. data/spec/support/alter_system_set_open_cursors.sql +1 -0
  66. data/spec/support/alter_system_user_password.sql +2 -0
  67. data/spec/support/create_oracle_enhanced_users.sql +31 -0
  68. metadata +105 -152
  69. data/.rspec +0 -2
  70. data/Gemfile +0 -52
  71. data/RUNNING_TESTS.md +0 -45
  72. data/Rakefile +0 -59
  73. data/activerecord-oracle_enhanced-adapter.gemspec +0 -130
  74. data/lib/active_record/connection_adapters/oracle_enhanced.rake +0 -105
  75. data/lib/active_record/connection_adapters/oracle_enhanced_activerecord_patches.rb +0 -41
  76. data/lib/active_record/connection_adapters/oracle_enhanced_base_ext.rb +0 -121
  77. data/lib/active_record/connection_adapters/oracle_enhanced_column.rb +0 -151
  78. data/lib/active_record/connection_adapters/oracle_enhanced_connection.rb +0 -119
  79. data/lib/active_record/connection_adapters/oracle_enhanced_context_index.rb +0 -359
  80. data/lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb +0 -25
  81. data/lib/active_record/connection_adapters/oracle_enhanced_cpk.rb +0 -21
  82. data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +0 -46
  83. data/lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb +0 -572
  84. data/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb +0 -497
  85. data/lib/active_record/connection_adapters/oracle_enhanced_procedures.rb +0 -260
  86. data/lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb +0 -227
  87. data/lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb +0 -260
  88. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb +0 -428
  89. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb +0 -258
  90. data/lib/active_record/connection_adapters/oracle_enhanced_structure_dump.rb +0 -294
  91. data/lib/active_record/connection_adapters/oracle_enhanced_tasks.rb +0 -17
  92. data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +0 -1
  93. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +0 -334
  94. data/spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb +0 -19
  95. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +0 -113
  96. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +0 -141
  97. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +0 -378
  98. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +0 -440
  99. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +0 -1400
  100. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +0 -339
@@ -1,17 +0,0 @@
1
- # Used just for Rails 2.x
2
- # In Rails 3.x rake tasks are loaded using railtie
3
- if ActiveRecord::VERSION::MAJOR == 2
4
-
5
- if defined?(Rake.application) && Rake.application &&
6
- ActiveRecord::Base.configurations[defined?(Rails.env) ? Rails.env : RAILS_ENV]['adapter'] == 'oracle_enhanced'
7
- oracle_enhanced_rakefile = File.dirname(__FILE__) + "/oracle_enhanced.rake"
8
- if Rake.application.lookup("environment")
9
- # rails tasks already defined; load the override tasks now
10
- load oracle_enhanced_rakefile
11
- else
12
- # rails tasks not loaded yet; load as an import
13
- Rake.application.add_import(oracle_enhanced_rakefile)
14
- end
15
- end
16
-
17
- end
@@ -1 +0,0 @@
1
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter::VERSION = File.read(File.expand_path('../../../../VERSION', __FILE__)).chomp
@@ -1,334 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "OracleEnhancedConnection" do
4
-
5
- describe "create connection" do
6
- before(:all) do
7
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
8
- end
9
-
10
- before(:each) do
11
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS) unless @conn.active?
12
- end
13
-
14
- it "should create new connection" do
15
- @conn.should be_active
16
- end
17
-
18
- it "should ping active connection" do
19
- @conn.ping.should be_true
20
- end
21
-
22
- it "should not ping inactive connection" do
23
- @conn.logoff
24
- lambda { @conn.ping }.should raise_error(ActiveRecord::ConnectionAdapters::OracleEnhancedConnectionException)
25
- end
26
-
27
- it "should reset active connection" do
28
- @conn.reset!
29
- @conn.should be_active
30
- end
31
-
32
- it "should be in autocommit mode after connection" do
33
- @conn.should be_autocommit
34
- end
35
-
36
- end
37
-
38
- describe "create connection with NLS parameters" do
39
- after do
40
- ENV['NLS_DATE_FORMAT'] = nil
41
- end
42
-
43
- it "should use NLS_DATE_FORMAT environment variable" do
44
- ENV['NLS_DATE_FORMAT'] = 'YYYY-MM-DD'
45
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
46
- @conn.select("SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_DATE_FORMAT'").should == [{'value' => 'YYYY-MM-DD'}]
47
- end
48
-
49
- it "should use configuration value and ignore NLS_DATE_FORMAT environment variable" do
50
- ENV['NLS_DATE_FORMAT'] = 'YYYY-MM-DD'
51
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS.merge(:nls_date_format => 'YYYY-MM-DD HH24:MI'))
52
- @conn.select("SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_DATE_FORMAT'").should == [{'value' => 'YYYY-MM-DD HH24:MI'}]
53
- end
54
-
55
- it "should use default value when NLS_DATE_FORMAT environment variable is not set" do
56
- ENV['NLS_DATE_FORMAT'] = nil
57
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
58
- default = ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter::DEFAULT_NLS_PARAMETERS[:nls_date_format]
59
- @conn.select("SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_DATE_FORMAT'").should == [{'value' => default}]
60
- end
61
- end
62
-
63
- describe "with non-string parameters" do
64
- before(:all) do
65
- params = CONNECTION_PARAMS.dup
66
- params[:username] = params[:username].to_sym
67
- params[:password] = params[:password].to_sym
68
- params[:database] = params[:database].to_sym
69
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
70
- end
71
-
72
- it "should create new connection" do
73
- @conn.should be_active
74
- end
75
- end
76
-
77
- describe "with slash-prefixed database name (service name)" do
78
- before(:all) do
79
- params = CONNECTION_PARAMS.dup
80
- params[:database] = "/#{params[:database]}" unless params[:database].match(/^\//)
81
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
82
- end
83
-
84
- it "should create new connection" do
85
- @conn.should be_active
86
- end
87
- end
88
-
89
- if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
90
-
91
- describe "create JDBC connection" do
92
-
93
- it "should create new connection using :url" do
94
- params = CONNECTION_PARAMS.dup
95
- params[:url] = "jdbc:oracle:thin:@#{DATABASE_HOST && "#{DATABASE_HOST}:"}#{DATABASE_PORT && "#{DATABASE_PORT}:"}#{DATABASE_NAME}"
96
- params[:host] = nil
97
- params[:database] = nil
98
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
99
- @conn.should be_active
100
- end
101
-
102
- it "should create new connection using :url and tnsnames alias" do
103
- params = CONNECTION_PARAMS.dup
104
- params[:url] = "jdbc:oracle:thin:@#{DATABASE_NAME}"
105
- params[:host] = nil
106
- params[:database] = nil
107
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
108
- @conn.should be_active
109
- end
110
-
111
- it "should create new connection using just tnsnames alias" do
112
- params = CONNECTION_PARAMS.dup
113
- params[:host] = nil
114
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
115
- @conn.should be_active
116
- end
117
-
118
- it "should create a new connection using JNDI" do
119
-
120
- begin
121
- import 'oracle.jdbc.driver.OracleDriver'
122
- import 'org.apache.commons.pool.impl.GenericObjectPool'
123
- import 'org.apache.commons.dbcp.PoolingDataSource'
124
- import 'org.apache.commons.dbcp.PoolableConnectionFactory'
125
- import 'org.apache.commons.dbcp.DriverManagerConnectionFactory'
126
- rescue NameError => e
127
- return pending e.message
128
- end
129
-
130
- class InitialContextMock
131
- def initialize
132
- connection_pool = GenericObjectPool.new(nil)
133
- uri = "jdbc:oracle:thin:@#{DATABASE_HOST && "#{DATABASE_HOST}:"}#{DATABASE_PORT && "#{DATABASE_PORT}:"}#{DATABASE_NAME}"
134
- connection_factory = DriverManagerConnectionFactory.new(uri, DATABASE_USER, DATABASE_PASSWORD)
135
- poolable_connection_factory = PoolableConnectionFactory.new(connection_factory,connection_pool,nil,nil,false,true)
136
- @data_source = PoolingDataSource.new(connection_pool)
137
- @data_source.access_to_underlying_connection_allowed = true
138
- end
139
- def lookup(path)
140
- if (path == 'java:/comp/env')
141
- return self
142
- else
143
- return @data_source
144
- end
145
- end
146
- end
147
-
148
- javax.naming.InitialContext.stub!(:new).and_return(InitialContextMock.new)
149
-
150
- params = {}
151
- params[:jndi] = 'java:comp/env/jdbc/test'
152
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
153
- @conn.should be_active
154
- end
155
-
156
- end
157
-
158
- it "should fall back to directly instantiating OracleDriver" do
159
- params = CONNECTION_PARAMS.dup
160
- params[:url] = "jdbc:oracle:thin:@#{DATABASE_HOST && "#{DATABASE_HOST}:"}#{DATABASE_PORT && "#{DATABASE_PORT}:"}#{DATABASE_NAME}"
161
- params[:host] = nil
162
- params[:database] = nil
163
- java.sql.DriverManager.stub!(:getConnection).and_raise('no suitable driver found')
164
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(params)
165
- @conn.should be_active
166
- end
167
-
168
- end
169
-
170
- describe "SQL execution" do
171
- before(:all) do
172
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
173
- end
174
-
175
- it "should execute SQL statement" do
176
- @conn.exec("SELECT * FROM dual").should_not be_nil
177
- end
178
-
179
- it "should execute SQL select" do
180
- @conn.select("SELECT * FROM dual").should == [{'dummy' => 'X'}]
181
- end
182
-
183
- it "should execute SQL select and return also columns" do
184
- @conn.select("SELECT * FROM dual", nil, true).should == [ [{'dummy' => 'X'}], ['dummy'] ]
185
- end
186
-
187
- end
188
-
189
- describe "SQL with bind parameters" do
190
- before(:all) do
191
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
192
- end
193
-
194
- it "should execute SQL statement with bind parameter" do
195
- cursor = @conn.prepare("SELECT * FROM dual WHERE :1 = 1")
196
- cursor.bind_param(1, 1)
197
- cursor.exec
198
- cursor.get_col_names.should == ['DUMMY']
199
- cursor.fetch.should == ["X"]
200
- cursor.close
201
- end
202
-
203
- it "should execute prepared statement with different bind parameters" do
204
- cursor = @conn.prepare("SELECT * FROM dual WHERE :1 = 1")
205
- cursor.bind_param(1, 1)
206
- cursor.exec
207
- cursor.fetch.should == ["X"]
208
- cursor.bind_param(1, 0)
209
- cursor.exec
210
- cursor.fetch.should be_nil
211
- cursor.close
212
- end
213
- end
214
-
215
- describe "SQL with bind parameters when NLS_NUMERIC_CHARACTERS is set to ', '" do
216
- before(:all) do
217
- ENV['NLS_NUMERIC_CHARACTERS'] = ", "
218
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
219
- @conn.exec "CREATE TABLE test_employees (age NUMBER(10,2))"
220
- end
221
-
222
- after(:all) do
223
- ENV['NLS_NUMERIC_CHARACTERS'] = nil
224
- @conn.exec "DROP TABLE test_employees" rescue nil
225
- end
226
-
227
- it "should execute prepared statement with decimal bind parameter " do
228
- cursor = @conn.prepare("INSERT INTO test_employees VALUES(:1)")
229
- column = ActiveRecord::ConnectionAdapters::OracleEnhancedColumn.new('age', nil, 'NUMBER(10,2)')
230
- column.type.should == :decimal
231
- cursor.bind_param(1, "1.5", column)
232
- cursor.exec
233
- cursor.close
234
- cursor = @conn.prepare("SELECT age FROM test_employees")
235
- cursor.exec
236
- cursor.fetch.should == [1.5]
237
- cursor.close
238
- end
239
- end
240
-
241
- describe "auto reconnection" do
242
- before(:all) do
243
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
244
- @conn = ActiveRecord::Base.connection.instance_variable_get("@connection")
245
- @sys_conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(SYS_CONNECTION_PARAMS)
246
- end
247
-
248
- before(:each) do
249
- ActiveRecord::Base.connection.reconnect! unless @conn.active?
250
- end
251
-
252
- def kill_current_session
253
- audsid = @conn.select("SELECT userenv('sessionid') audsid FROM dual").first['audsid']
254
- sid_serial = @sys_conn.select("SELECT s.sid||','||s.serial# sid_serial
255
- FROM v$session s
256
- WHERE audsid = '#{audsid}'").first['sid_serial']
257
- @sys_conn.exec "ALTER SYSTEM KILL SESSION '#{sid_serial}' IMMEDIATE"
258
- end
259
-
260
- it "should reconnect and execute SQL statement if connection is lost and auto retry is enabled" do
261
- # @conn.auto_retry = true
262
- ActiveRecord::Base.connection.auto_retry = true
263
- kill_current_session
264
- @conn.exec("SELECT * FROM dual").should_not be_nil
265
- end
266
-
267
- it "should not reconnect and execute SQL statement if connection is lost and auto retry is disabled" do
268
- # @conn.auto_retry = false
269
- ActiveRecord::Base.connection.auto_retry = false
270
- kill_current_session
271
- lambda { @conn.exec("SELECT * FROM dual") }.should raise_error
272
- end
273
-
274
- it "should reconnect and execute SQL select if connection is lost and auto retry is enabled" do
275
- # @conn.auto_retry = true
276
- ActiveRecord::Base.connection.auto_retry = true
277
- kill_current_session
278
- @conn.select("SELECT * FROM dual").should == [{'dummy' => 'X'}]
279
- end
280
-
281
- it "should not reconnect and execute SQL select if connection is lost and auto retry is disabled" do
282
- # @conn.auto_retry = false
283
- ActiveRecord::Base.connection.auto_retry = false
284
- kill_current_session
285
- lambda { @conn.select("SELECT * FROM dual") }.should raise_error
286
- end
287
-
288
- end
289
-
290
- describe "describe table" do
291
- before(:all) do
292
- @conn = ActiveRecord::ConnectionAdapters::OracleEnhancedConnection.create(CONNECTION_PARAMS)
293
- @owner = CONNECTION_PARAMS[:username].upcase
294
- end
295
-
296
- it "should describe existing table" do
297
- @conn.exec "CREATE TABLE test_employees (first_name VARCHAR2(20))" rescue nil
298
- @conn.describe("test_employees").should == [@owner, "TEST_EMPLOYEES"]
299
- @conn.exec "DROP TABLE test_employees" rescue nil
300
- end
301
-
302
- it "should not describe non-existing table" do
303
- lambda { @conn.describe("test_xxx") }.should raise_error(ActiveRecord::ConnectionAdapters::OracleEnhancedConnectionException)
304
- end
305
-
306
- it "should describe table in other schema" do
307
- @conn.describe("sys.dual").should == ["SYS", "DUAL"]
308
- end
309
-
310
- it "should describe existing view" do
311
- @conn.exec "CREATE TABLE test_employees (first_name VARCHAR2(20))" rescue nil
312
- @conn.exec "CREATE VIEW test_employees_v AS SELECT * FROM test_employees" rescue nil
313
- @conn.describe("test_employees_v").should == [@owner, "TEST_EMPLOYEES_V"]
314
- @conn.exec "DROP VIEW test_employees_v" rescue nil
315
- @conn.exec "DROP TABLE test_employees" rescue nil
316
- end
317
-
318
- it "should describe view in other schema" do
319
- @conn.describe("sys.v_$version").should == ["SYS", "V_$VERSION"]
320
- end
321
-
322
- it "should describe existing private synonym" do
323
- @conn.exec "CREATE SYNONYM test_dual FOR sys.dual" rescue nil
324
- @conn.describe("test_dual").should == ["SYS", "DUAL"]
325
- @conn.exec "DROP SYNONYM test_dual" rescue nil
326
- end
327
-
328
- it "should describe existing public synonym" do
329
- @conn.describe("all_tables").should == ["SYS", "ALL_TABLES"]
330
- end
331
-
332
- end
333
-
334
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe "OracleEnhancedAdapter to_d method" do
5
- it "BigDecimal#to_d returns the same decimal number" do
6
- d = BigDecimal.new("12345678901234567890.0123456789")
7
- d.to_d.should == d
8
- end
9
-
10
- it "Bignum#to_d translates large integer to decimal" do
11
- n = 12345678901234567890
12
- n.to_d.should == BigDecimal.new(n.to_s)
13
- end
14
-
15
- it "Fixnum#to_d translates small integer to decimal" do
16
- n = 123456
17
- n.to_d.should == BigDecimal.new(n.to_s)
18
- end
19
- end
@@ -1,113 +0,0 @@
1
- require 'spec_helper'
2
-
3
- unless defined?(NO_COMPOSITE_PRIMARY_KEYS)
4
-
5
- describe "OracleEnhancedAdapter composite_primary_keys support" do
6
- include SchemaSpecHelper
7
-
8
- before(:all) do
9
- if defined?(::ActiveRecord::ConnectionAdapters::OracleAdapter)
10
- @old_oracle_adapter = ::ActiveRecord::ConnectionAdapters::OracleAdapter
11
- ::ActiveRecord::ConnectionAdapters.send(:remove_const, :OracleAdapter)
12
- end
13
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
14
- if $cpk_oracle_adapter
15
- ::ActiveRecord::ConnectionAdapters::OracleAdapter = $cpk_oracle_adapter
16
- $cpk_oracle_adapter = nil
17
- end
18
- require 'composite_primary_keys'
19
- end
20
-
21
- after(:all) do
22
- # Object.send(:remove_const, 'CompositePrimaryKeys') if defined?(CompositePrimaryKeys)
23
- if defined?(::ActiveRecord::ConnectionAdapters::OracleAdapter)
24
- $cpk_oracle_adapter = ::ActiveRecord::ConnectionAdapters::OracleAdapter
25
- ::ActiveRecord::ConnectionAdapters.send(:remove_const, :OracleAdapter)
26
- end
27
- if @old_oracle_adapter
28
- ::ActiveRecord::ConnectionAdapters::OracleAdapter = @old_oracle_adapter
29
- @old_oracle_adapter = nil
30
- end
31
- end
32
-
33
- describe "do not use count distinct" do
34
- before(:all) do
35
- schema_define do
36
- create_table :job_history, :primary_key => [:employee_id, :start_date], :force => true do |t|
37
- t.integer :employee_id
38
- t.date :start_date
39
- end
40
- end
41
- class ::JobHistory < ActiveRecord::Base
42
- set_table_name "job_history"
43
- set_primary_keys :employee_id, :start_date
44
- end
45
- end
46
-
47
- after(:all) do
48
- Object.send(:remove_const, 'JobHistory') if defined?(JobHistory)
49
- schema_define do
50
- drop_table :job_history
51
- end
52
- end
53
-
54
- it "should tell ActiveRecord that count distinct is not supported" do
55
- ActiveRecord::Base.connection.supports_count_distinct?.should be_false
56
- end
57
-
58
- it "should execute correct SQL COUNT DISTINCT statement on table with composite primary keys" do
59
- lambda { JobHistory.count(:distinct => true) }.should_not raise_error
60
- end
61
- end
62
-
63
- describe "table with LOB" do
64
- before(:all) do
65
- schema_define do
66
- create_table :cpk_write_lobs_test, :primary_key => [:type_category, :date_value], :force => true do |t|
67
- t.string :type_category, :limit => 15, :null => false
68
- t.date :date_value, :null => false
69
- t.text :results, :null => false
70
- t.timestamps
71
- end
72
- create_table :non_cpk_write_lobs_test, :force => true do |t|
73
- t.date :date_value, :null => false
74
- t.text :results, :null => false
75
- t.timestamps
76
- end
77
- end
78
- class ::CpkWriteLobsTest < ActiveRecord::Base
79
- set_table_name 'cpk_write_lobs_test'
80
- set_primary_keys :type_category, :date_value
81
- end
82
- class ::NonCpkWriteLobsTest < ActiveRecord::Base
83
- set_table_name 'non_cpk_write_lobs_test'
84
- end
85
- end
86
-
87
- after(:all) do
88
- schema_define do
89
- drop_table :cpk_write_lobs_test
90
- drop_table :non_cpk_write_lobs_test
91
- end
92
- Object.send(:remove_const, "CpkWriteLobsTest")
93
- Object.send(:remove_const, "NonCpkWriteLobsTest")
94
- end
95
-
96
- it "should create new record in table with CPK and LOB" do
97
- lambda {
98
- CpkWriteLobsTest.create(:type_category => 'AAA', :date_value => Date.today, :results => 'DATA '*10)
99
- }.should_not raise_error
100
- end
101
-
102
- it "should create new record in table without CPK and with LOB" do
103
- lambda {
104
- NonCpkWriteLobsTest.create(:date_value => Date.today, :results => 'DATA '*10)
105
- }.should_not raise_error
106
- end
107
- end
108
-
109
- # Other testing was done based on composite_primary_keys tests
110
-
111
- end
112
-
113
- end