activerecord-oracle_enhanced-adapter 6.0.4 → 6.1.0.rc1

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +83 -0
  3. data/README.md +1 -1
  4. data/VERSION +1 -1
  5. data/lib/active_record/connection_adapters/oracle_enhanced/connection.rb +2 -3
  6. data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +0 -1
  7. data/lib/active_record/connection_adapters/oracle_enhanced/database_limits.rb +0 -9
  8. data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +6 -6
  9. data/lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb +4 -5
  10. data/lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb +0 -1
  11. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +3 -4
  12. data/lib/active_record/connection_adapters/oracle_enhanced/lob.rb +1 -2
  13. data/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +2 -3
  14. data/lib/active_record/connection_adapters/oracle_enhanced/procedures.rb +0 -1
  15. data/lib/active_record/connection_adapters/oracle_enhanced/quoting.rb +2 -3
  16. data/lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb +2 -3
  17. data/lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb +15 -3
  18. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +42 -39
  19. data/lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb +16 -17
  20. data/lib/active_record/connection_adapters/oracle_enhanced/type_metadata.rb +2 -1
  21. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +57 -15
  22. data/lib/active_record/type/oracle_enhanced/boolean.rb +0 -1
  23. data/lib/active_record/type/oracle_enhanced/integer.rb +0 -1
  24. data/lib/arel/visitors/oracle.rb +253 -0
  25. data/lib/arel/visitors/oracle12.rb +160 -0
  26. data/spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb +9 -3
  27. data/spec/active_record/connection_adapters/oracle_enhanced/database_tasks_spec.rb +6 -1
  28. data/spec/active_record/connection_adapters/oracle_enhanced/procedures_spec.rb +0 -1
  29. data/spec/active_record/connection_adapters/oracle_enhanced/schema_dumper_spec.rb +27 -0
  30. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +48 -0
  31. data/spec/active_record/oracle_enhanced/type/national_character_string_spec.rb +4 -2
  32. data/spec/spec_config.yaml.template +2 -2
  33. data/spec/spec_helper.rb +13 -2
  34. data/spec/support/stats.sql +3 -0
  35. metadata +35 -31
@@ -0,0 +1,160 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arel # :nodoc: all
4
+ module Visitors
5
+ class Oracle12 < Arel::Visitors::ToSql
6
+ private
7
+ def visit_Arel_Nodes_SelectStatement(o, collector)
8
+ # Oracle does not allow LIMIT clause with select for update
9
+ if o.limit && o.lock
10
+ raise ArgumentError, <<~MSG
11
+ Combination of limit and lock is not supported. Because generated SQL statements
12
+ `SELECT FOR UPDATE and FETCH FIRST n ROWS` generates ORA-02014.
13
+ MSG
14
+ end
15
+ super
16
+ end
17
+
18
+ def visit_Arel_Nodes_SelectOptions(o, collector)
19
+ collector = maybe_visit o.offset, collector
20
+ collector = maybe_visit o.limit, collector
21
+ maybe_visit o.lock, collector
22
+ end
23
+
24
+ def visit_Arel_Nodes_Limit(o, collector)
25
+ collector << "FETCH FIRST "
26
+ collector = visit o.expr, collector
27
+ collector << " ROWS ONLY"
28
+ end
29
+
30
+ def visit_Arel_Nodes_Offset(o, collector)
31
+ collector << "OFFSET "
32
+ visit o.expr, collector
33
+ collector << " ROWS"
34
+ end
35
+
36
+ def visit_Arel_Nodes_Except(o, collector)
37
+ collector << "( "
38
+ collector = infix_value o, collector, " MINUS "
39
+ collector << " )"
40
+ end
41
+
42
+ ##
43
+ # To avoid ORA-01795: maximum number of expressions in a list is 1000
44
+ # tell ActiveRecord to limit us to 1000 ids at a time
45
+ def visit_Arel_Nodes_HomogeneousIn(o, collector)
46
+ in_clause_length = @connection.in_clause_length
47
+ values = o.casted_values.map { |v| @connection.quote(v) }
48
+ column_name = quote_table_name(o.table_name) + "." + quote_column_name(o.column_name)
49
+ operator =
50
+ if o.type == :in
51
+ "IN ("
52
+ else
53
+ "NOT IN ("
54
+ end
55
+
56
+ if !Array === values || values.length <= in_clause_length
57
+ collector << column_name
58
+ collector << operator
59
+
60
+ expr =
61
+ if values.empty?
62
+ @connection.quote(nil)
63
+ else
64
+ values.join(",")
65
+ end
66
+
67
+ collector << expr
68
+ collector << ")"
69
+ else
70
+ collector << "("
71
+ values.each_slice(in_clause_length).each_with_index do |valuez, i|
72
+ collector << " OR " unless i == 0
73
+ collector << column_name
74
+ collector << operator
75
+ collector << valuez.join(",")
76
+ collector << ")"
77
+ end
78
+ collector << ")"
79
+ end
80
+
81
+ collector
82
+ end
83
+
84
+ def visit_Arel_Nodes_In(o, collector)
85
+ attr, values = o.left, o.right
86
+
87
+ if Array === values
88
+ unless values.empty?
89
+ values.delete_if { |value| unboundable?(value) }
90
+ end
91
+
92
+ return collector << "1=0" if values.empty?
93
+ end
94
+
95
+ in_clause_length = @connection.in_clause_length
96
+
97
+ if !Array === values || values.length <= in_clause_length
98
+ visit(attr, collector) << " IN ("
99
+ visit(values, collector) << ")"
100
+ else
101
+ collector << "("
102
+ values.each_slice(in_clause_length).each_with_index do |valuez, i|
103
+ collector << " OR " unless i == 0
104
+ visit(attr, collector) << " IN ("
105
+ visit(valuez, collector) << ")"
106
+ end
107
+ collector << ")"
108
+ end
109
+ end
110
+
111
+ def visit_Arel_Nodes_NotIn(o, collector)
112
+ attr, values = o.left, o.right
113
+
114
+ if Array === values
115
+ unless values.empty?
116
+ values.delete_if { |value| unboundable?(value) }
117
+ end
118
+
119
+ return collector << "1=1" if values.empty?
120
+ end
121
+
122
+ in_clause_length = @connection.in_clause_length
123
+
124
+ if !Array === values || values.length <= in_clause_length
125
+ visit(attr, collector) << " NOT IN ("
126
+ visit(values, collector) << ")"
127
+ else
128
+ values.each_slice(in_clause_length).each_with_index do |valuez, i|
129
+ collector << " AND " unless i == 0
130
+ visit(attr, collector) << " NOT IN ("
131
+ visit(valuez, collector) << ")"
132
+ end
133
+ collector
134
+ end
135
+ end
136
+
137
+ def visit_Arel_Nodes_UpdateStatement(o, collector)
138
+ # Oracle does not allow ORDER BY/LIMIT in UPDATEs.
139
+ if o.orders.any? && o.limit.nil?
140
+ # However, there is no harm in silently eating the ORDER BY clause if no LIMIT has been provided,
141
+ # otherwise let the user deal with the error
142
+ o = o.dup
143
+ o.orders = []
144
+ end
145
+
146
+ super
147
+ end
148
+
149
+ def visit_Arel_Nodes_BindParam(o, collector)
150
+ collector.add_bind(o.value) { |i| ":a#{i}" }
151
+ end
152
+
153
+ def is_distinct_from(o, collector)
154
+ collector << "DECODE("
155
+ collector = visit [o.left, o.right, 0, 1], collector
156
+ collector << ")"
157
+ end
158
+ end
159
+ end
160
+ end
@@ -40,6 +40,12 @@ describe "OracleEnhancedAdapter establish connection" do
40
40
  ActiveRecord::Base.establish_connection(SYSTEM_CONNECTION_PARAMS.merge(cursor_sharing: :exact))
41
41
  expect(ActiveRecord::Base.connection.select_value("select value from v$parameter where name = 'cursor_sharing'")).to eq("EXACT")
42
42
  end
43
+
44
+ it "should connect to database using service_name" do
45
+ ActiveRecord::Base.establish_connection(SERVICE_NAME_CONNECTION_PARAMS)
46
+ expect(ActiveRecord::Base.connection).not_to be_nil
47
+ expect(ActiveRecord::Base.connection.class).to eq(ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter)
48
+ end
43
49
  end
44
50
 
45
51
  describe "OracleEnhancedConnection" do
@@ -81,13 +87,13 @@ describe "OracleEnhancedConnection" do
81
87
  expect(ActiveRecord::Base.connection).to be_active
82
88
  end
83
89
 
84
- it "should swith to specified schema" do
90
+ it "should switch to specified schema" do
85
91
  ActiveRecord::Base.establish_connection(CONNECTION_WITH_SCHEMA_PARAMS)
86
92
  expect(ActiveRecord::Base.connection.current_schema).to eq(CONNECTION_WITH_SCHEMA_PARAMS[:schema].upcase)
87
93
  expect(ActiveRecord::Base.connection.current_user).to eq(CONNECTION_WITH_SCHEMA_PARAMS[:username].upcase)
88
94
  end
89
95
 
90
- it "should swith to specified schema after reset" do
96
+ it "should switch to specified schema after reset" do
91
97
  ActiveRecord::Base.connection.reset!
92
98
  expect(ActiveRecord::Base.connection.current_schema).to eq(CONNECTION_WITH_SCHEMA_PARAMS[:schema].upcase)
93
99
  end
@@ -180,7 +186,7 @@ describe "OracleEnhancedConnection" do
180
186
  describe "with slash-prefixed database name (service name)" do
181
187
  before(:all) do
182
188
  params = CONNECTION_PARAMS.dup
183
- params[:database] = "/#{params[:database]}" unless params[:database].match(/^\//)
189
+ params[:database] = "/#{params[:database]}" unless params[:database].start_with?("/")
184
190
  @conn = ActiveRecord::ConnectionAdapters::OracleEnhanced::Connection.create(params)
185
191
  end
186
192
 
@@ -16,10 +16,15 @@ describe "Oracle Enhanced adapter database tasks" do
16
16
  ActiveRecord::Tasks::DatabaseTasks.create(new_user_config)
17
17
  end
18
18
  end
19
- it "creates user" do
19
+ xit "creates user" do
20
20
  query = "SELECT COUNT(*) FROM dba_users WHERE UPPER(username) = '#{new_user_config[:username].upcase}'"
21
21
  expect(ActiveRecord::Base.connection.select_value(query)).to eq(1)
22
22
  end
23
+ xit "grants permissions defined by OracleEnhancedAdapter.persmissions" do
24
+ query = "SELECT COUNT(*) FROM DBA_SYS_PRIVS WHERE GRANTEE = '#{new_user_config[:username].upcase}'"
25
+ permissions_count = ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.permissions.size
26
+ expect(ActiveRecord::Base.connection.select_value(query)).to eq(permissions_count)
27
+ end
23
28
  after do
24
29
  ActiveRecord::Base.connection.execute("DROP USER #{new_user_config[:username]}")
25
30
  end
@@ -133,7 +133,6 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
133
133
  end
134
134
 
135
135
  private
136
-
137
136
  def raise_make_transaction_rollback
138
137
  raise "Make the transaction rollback"
139
138
  end
@@ -305,6 +305,33 @@ describe "OracleEnhancedAdapter schema dump" do
305
305
  end
306
306
  end
307
307
 
308
+ describe "context indexes" do
309
+ before(:each) do
310
+ schema_define do
311
+ create_table :test_context_indexed_posts, force: true do |t|
312
+ t.string :title
313
+ t.string :body
314
+ t.index :title
315
+ end
316
+ add_context_index :test_context_indexed_posts, :body, sync: "ON COMMIT"
317
+ end
318
+ end
319
+
320
+ after(:each) do
321
+ schema_define do
322
+ drop_table :test_context_indexed_posts
323
+ end
324
+ end
325
+
326
+ it "should dump the context index" do
327
+ expect(standard_dump).to include(%(add_context_index "test_context_indexed_posts", ["body"]))
328
+ end
329
+
330
+ it "dumps the sync option" do
331
+ expect(standard_dump).to include(%(sync: "ON COMMIT"))
332
+ end
333
+ end
334
+
308
335
  describe "virtual columns" do
309
336
  before(:all) do
310
337
  skip "Not supported in this database version" unless @oracle11g_or_higher
@@ -193,6 +193,46 @@ describe "OracleEnhancedAdapter" do
193
193
  end
194
194
  end
195
195
 
196
+ describe "lists" do
197
+ before(:all) do
198
+ schema_define do
199
+ create_table :test_posts do |t|
200
+ t.string :title
201
+ end
202
+ end
203
+ class ::TestPost < ActiveRecord::Base
204
+ has_many :test_comments
205
+ end
206
+ @ids = (1..1010).to_a
207
+ TestPost.transaction do
208
+ @ids.each do |id|
209
+ TestPost.create!(id: id, title: "Title #{id}")
210
+ end
211
+ end
212
+ end
213
+
214
+ after(:all) do
215
+ schema_define do
216
+ drop_table :test_posts
217
+ end
218
+ Object.send(:remove_const, "TestPost")
219
+ ActiveRecord::Base.clear_cache!
220
+ end
221
+
222
+ ##
223
+ # See this GitHub issue for an explanation of homogenous lists.
224
+ # https://github.com/rails/rails/commit/72fd0bae5948c1169411941aeea6fef4c58f34a9
225
+ it "should allow more than 1000 items in a list where the list is homogenous" do
226
+ posts = TestPost.where(id: @ids).to_a
227
+ expect(posts.size).to eq(@ids.size)
228
+ end
229
+
230
+ it "should allow more than 1000 items in a list where the list is non-homogenous" do
231
+ posts = TestPost.where(id: [*@ids, nil]).to_a
232
+ expect(posts.size).to eq(@ids.size)
233
+ end
234
+ end
235
+
196
236
  describe "with statement pool" do
197
237
  before(:all) do
198
238
  ActiveRecord::Base.establish_connection(CONNECTION_PARAMS.merge(statement_limit: 3))
@@ -244,6 +284,14 @@ describe "OracleEnhancedAdapter" do
244
284
  end
245
285
  end
246
286
 
287
+ describe "database_exists?" do
288
+ it "should raise `NotImplementedError`" do
289
+ expect {
290
+ ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.database_exists?(CONNECTION_PARAMS)
291
+ }.to raise_error(NotImplementedError)
292
+ end
293
+ end
294
+
247
295
  describe "explain" do
248
296
  before(:all) do
249
297
  @conn = ActiveRecord::Base.connection
@@ -35,9 +35,11 @@ describe "OracleEnhancedAdapter quoting of NCHAR and NVARCHAR2 columns" do
35
35
  columns = @conn.columns("test_items")
36
36
  %w(nchar_column nvarchar2_column char_column varchar2_column).each do |col|
37
37
  column = columns.detect { |c| c.name == col }
38
- value = @conn.type_cast_from_column(column, "abc")
38
+ type = @conn.lookup_cast_type_from_column(column)
39
+ value = type.serialize("abc")
39
40
  expect(@conn.quote(value)).to eq(column.sql_type[0, 1] == "N" ? "N'abc'" : "'abc'")
40
- nilvalue = @conn.type_cast_from_column(column, nil)
41
+ type = @conn.lookup_cast_type_from_column(column)
42
+ nilvalue = type.serialize(nil)
41
43
  expect(@conn.quote(nilvalue)).to eq("NULL")
42
44
  end
43
45
  end
@@ -1,4 +1,4 @@
1
- # copy this file to spec/config.yaml and set appropriate values
1
+ # copy this file to spec/spec_config.yaml and set appropriate values
2
2
  # you can also use environment variables, see spec_helper.rb
3
3
  database:
4
4
  name: 'orcl'
@@ -8,4 +8,4 @@ database:
8
8
  password: 'oracle_enhanced'
9
9
  sys_password: 'admin'
10
10
  non_default_tablespace: 'SYSTEM'
11
- timezone: 'Europe/Riga'
11
+ timezone: 'Europe/Riga'
@@ -17,8 +17,8 @@ end
17
17
 
18
18
  require "rspec"
19
19
 
20
- if !defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby"
21
- puts "==> Running specs with MRI version #{RUBY_VERSION}"
20
+ if !defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby" || RUBY_ENGINE == "truffleruby"
21
+ puts "==> Running specs with ruby version #{RUBY_VERSION}"
22
22
  require "oci8"
23
23
  elsif RUBY_ENGINE == "jruby"
24
24
  puts "==> Running specs with JRuby version #{JRUBY_VERSION}"
@@ -105,6 +105,8 @@ module LoggerSpecHelper
105
105
  end
106
106
  end
107
107
 
108
+ ActiveRecord::LogSubscriber::IGNORE_PAYLOAD_NAMES.replace(["EXPLAIN"])
109
+
108
110
  module SchemaSpecHelper
109
111
  def schema_define(&block)
110
112
  ActiveRecord::Schema.define do
@@ -183,6 +185,15 @@ SYSTEM_CONNECTION_PARAMS = {
183
185
  password: DATABASE_SYS_PASSWORD
184
186
  }
185
187
 
188
+ SERVICE_NAME_CONNECTION_PARAMS = {
189
+ adapter: "oracle_enhanced",
190
+ database: "/#{DATABASE_NAME}",
191
+ host: DATABASE_HOST,
192
+ port: DATABASE_PORT,
193
+ username: DATABASE_USER,
194
+ password: DATABASE_PASSWORD
195
+ }
196
+
186
197
  DATABASE_NON_DEFAULT_TABLESPACE = config["database"]["non_default_tablespace"] || ENV["DATABASE_NON_DEFAULT_TABLESPACE"] || "SYSTEM"
187
198
 
188
199
  # set default time zone in TZ environment variable
@@ -0,0 +1,3 @@
1
+ exec DBMS_STATS.GATHER_DICTIONARY_STATS();
2
+ exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
3
+ quit
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: 6.0.4
4
+ version: 6.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raimonds Simanovskis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-18 00:00:00.000000000 Z
11
+ date: 2020-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 6.0.0
19
+ version: 6.1.0.rc1
20
20
  type: :runtime
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: 6.0.0
26
+ version: 6.1.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ruby-plsql
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +86,8 @@ files:
86
86
  - lib/active_record/type/oracle_enhanced/timestampltz.rb
87
87
  - lib/active_record/type/oracle_enhanced/timestamptz.rb
88
88
  - lib/activerecord-oracle_enhanced-adapter.rb
89
+ - lib/arel/visitors/oracle.rb
90
+ - lib/arel/visitors/oracle12.rb
89
91
  - spec/active_record/connection_adapters/emulation/oracle_adapter_spec.rb
90
92
  - spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb
91
93
  - spec/active_record/connection_adapters/oracle_enhanced/context_index_spec.rb
@@ -116,11 +118,12 @@ files:
116
118
  - spec/support/alter_system_set_open_cursors.sql
117
119
  - spec/support/alter_system_user_password.sql
118
120
  - spec/support/create_oracle_enhanced_users.sql
121
+ - spec/support/stats.sql
119
122
  homepage: http://github.com/rsim/oracle-enhanced
120
123
  licenses:
121
124
  - MIT
122
125
  metadata: {}
123
- post_install_message:
126
+ post_install_message:
124
127
  rdoc_options: []
125
128
  require_paths:
126
129
  - lib
@@ -135,38 +138,39 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
138
  - !ruby/object:Gem::Version
136
139
  version: 1.8.11
137
140
  requirements: []
138
- rubygems_version: 3.1.2
139
- signing_key:
141
+ rubygems_version: 3.1.4
142
+ signing_key:
140
143
  specification_version: 4
141
144
  summary: Oracle enhanced adapter for ActiveRecord
142
145
  test_files:
143
- - spec/spec_helper.rb
144
- - spec/spec_config.yaml.template
145
- - spec/active_record/connection_adapters/emulation/oracle_adapter_spec.rb
146
- - spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb
147
- - spec/active_record/connection_adapters/oracle_enhanced/database_tasks_spec.rb
148
- - spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb
149
- - spec/active_record/connection_adapters/oracle_enhanced/quoting_spec.rb
150
- - spec/active_record/connection_adapters/oracle_enhanced/schema_dumper_spec.rb
151
- - spec/active_record/connection_adapters/oracle_enhanced/dbms_output_spec.rb
152
- - spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb
153
- - spec/active_record/connection_adapters/oracle_enhanced/procedures_spec.rb
154
- - spec/active_record/connection_adapters/oracle_enhanced/structure_dump_spec.rb
155
- - spec/active_record/connection_adapters/oracle_enhanced/context_index_spec.rb
156
- - spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
157
- - spec/active_record/oracle_enhanced/type/decimal_spec.rb
158
- - spec/active_record/oracle_enhanced/type/national_character_string_spec.rb
159
146
  - spec/active_record/oracle_enhanced/type/dirty_spec.rb
147
+ - spec/active_record/oracle_enhanced/type/national_character_text_spec.rb
148
+ - spec/active_record/oracle_enhanced/type/raw_spec.rb
149
+ - spec/active_record/oracle_enhanced/type/float_spec.rb
150
+ - spec/active_record/oracle_enhanced/type/decimal_spec.rb
151
+ - spec/active_record/oracle_enhanced/type/character_string_spec.rb
160
152
  - spec/active_record/oracle_enhanced/type/boolean_spec.rb
161
153
  - spec/active_record/oracle_enhanced/type/json_spec.rb
162
- - spec/active_record/oracle_enhanced/type/raw_spec.rb
163
154
  - spec/active_record/oracle_enhanced/type/binary_spec.rb
164
- - spec/active_record/oracle_enhanced/type/text_spec.rb
155
+ - spec/active_record/oracle_enhanced/type/national_character_string_spec.rb
165
156
  - spec/active_record/oracle_enhanced/type/timestamp_spec.rb
166
- - spec/active_record/oracle_enhanced/type/national_character_text_spec.rb
167
- - spec/active_record/oracle_enhanced/type/character_string_spec.rb
168
157
  - spec/active_record/oracle_enhanced/type/integer_spec.rb
169
- - spec/active_record/oracle_enhanced/type/float_spec.rb
170
- - spec/support/alter_system_set_open_cursors.sql
171
- - spec/support/alter_system_user_password.sql
158
+ - spec/active_record/oracle_enhanced/type/text_spec.rb
159
+ - spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
160
+ - spec/active_record/connection_adapters/emulation/oracle_adapter_spec.rb
161
+ - spec/active_record/connection_adapters/oracle_enhanced/schema_dumper_spec.rb
162
+ - spec/active_record/connection_adapters/oracle_enhanced/database_tasks_spec.rb
163
+ - spec/active_record/connection_adapters/oracle_enhanced/quoting_spec.rb
164
+ - spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb
165
+ - spec/active_record/connection_adapters/oracle_enhanced/procedures_spec.rb
166
+ - spec/active_record/connection_adapters/oracle_enhanced/structure_dump_spec.rb
167
+ - spec/active_record/connection_adapters/oracle_enhanced/context_index_spec.rb
168
+ - spec/active_record/connection_adapters/oracle_enhanced/dbms_output_spec.rb
169
+ - spec/active_record/connection_adapters/oracle_enhanced/connection_spec.rb
170
+ - spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb
171
+ - spec/support/stats.sql
172
172
  - spec/support/create_oracle_enhanced_users.sql
173
+ - spec/support/alter_system_user_password.sql
174
+ - spec/support/alter_system_set_open_cursors.sql
175
+ - spec/spec_config.yaml.template
176
+ - spec/spec_helper.rb