activerecord-oracle_enhanced-adapter 1.7.11 → 1.8.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +206 -4
  3. data/README.md +37 -1
  4. data/VERSION +1 -1
  5. data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +1 -1
  6. data/lib/active_record/connection_adapters/oracle_enhanced/column.rb +7 -59
  7. data/lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb +6 -50
  8. data/lib/active_record/connection_adapters/oracle_enhanced/connection.rb +11 -11
  9. data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +117 -117
  10. data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +37 -27
  11. data/lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb +10 -10
  12. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +56 -71
  13. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb +0 -7
  14. data/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +51 -69
  15. data/lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb +4 -4
  16. data/lib/active_record/connection_adapters/oracle_enhanced/procedures.rb +76 -76
  17. data/lib/active_record/connection_adapters/oracle_enhanced/quoting.rb +14 -43
  18. data/lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb +60 -64
  19. data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +33 -47
  20. data/lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb +150 -160
  21. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +95 -133
  22. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +3 -3
  23. data/lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb +66 -101
  24. data/lib/active_record/connection_adapters/oracle_enhanced/version.rb +1 -1
  25. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +290 -533
  26. data/lib/active_record/oracle_enhanced/type/boolean.rb +7 -10
  27. data/lib/active_record/oracle_enhanced/type/integer.rb +3 -4
  28. data/lib/active_record/oracle_enhanced/type/json.rb +8 -0
  29. data/lib/active_record/oracle_enhanced/type/national_character_string.rb +1 -1
  30. data/lib/active_record/oracle_enhanced/type/raw.rb +2 -3
  31. data/lib/active_record/oracle_enhanced/type/string.rb +2 -2
  32. data/lib/active_record/oracle_enhanced/type/text.rb +2 -2
  33. data/lib/active_record/oracle_enhanced/type/timestamptz.rb +23 -0
  34. data/lib/activerecord-oracle_enhanced-adapter.rb +2 -2
  35. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +55 -162
  36. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +32 -34
  37. data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +44 -42
  38. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +250 -357
  39. data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +14 -6
  40. data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +3 -5
  41. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +115 -124
  42. data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +2 -3
  43. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +68 -72
  44. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +64 -80
  45. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +223 -329
  46. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +18 -20
  47. data/spec/spec_config.yaml.template +11 -0
  48. data/spec/spec_helper.rb +59 -59
  49. data/spec/support/alter_system_user_password.sql +2 -0
  50. data/spec/support/create_oracle_enhanced_users.sql +31 -0
  51. metadata +25 -25
  52. data/.rspec +0 -2
  53. data/Gemfile +0 -22
  54. data/RUNNING_TESTS.md +0 -83
  55. data/Rakefile +0 -45
  56. data/activerecord-oracle_enhanced-adapter.gemspec +0 -94
  57. data/lib/active_record/connection_adapters/oracle_enhanced/cpk.rb +0 -19
  58. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +0 -113
@@ -1,4 +1,4 @@
1
- require 'digest/sha1'
1
+ require "digest/sha1"
2
2
 
3
3
  module ActiveRecord
4
4
  module ConnectionAdapters
@@ -80,10 +80,10 @@ module ActiveRecord
80
80
  if supports_comments? && !supports_comments_in_create?
81
81
  change_table_comment(table_name, comment) if comment
82
82
  td.columns.each do |column|
83
- change_column_comment(table_name, column.name, column.comment) if column.comment
83
+ change_column_comment(table_name, column.name, column.comment) if column.comment.present?
84
84
  end
85
85
  end
86
- td.indexes.each { |c,o| add_index table_name, c, o }
86
+ td.indexes.each { |c, o| add_index table_name, c, o }
87
87
 
88
88
  rebuild_primary_key_index_to_default_tablespace(table_name, options)
89
89
  end
@@ -113,12 +113,8 @@ module ActiveRecord
113
113
  self.all_schema_indexes = nil
114
114
  end
115
115
 
116
- def dump_schema_information #:nodoc:
117
- super
118
- end
119
-
120
116
  def insert_versions_sql(versions) # :nodoc:
121
- sm_table = quote_table_name(ActiveRecord::Migrator.schema_migrations_table_name)
117
+ sm_table = quote_table_name(ActiveRecord::SchemaMigration.table_name)
122
118
 
123
119
  if supports_multi_insert?
124
120
  versions.inject("INSERT ALL\n") { |sql, version|
@@ -137,18 +133,10 @@ module ActiveRecord
137
133
  end
138
134
  end
139
135
 
140
- def initialize_schema_migrations_table
141
- super
142
- end
143
-
144
- def update_table_definition(table_name, base) #:nodoc:
145
- OracleEnhanced::Table.new(table_name, base)
146
- end
147
-
148
136
  def add_index(table_name, column_name, options = {}) #:nodoc:
149
137
  index_name, index_type, quoted_column_names, tablespace, index_options = add_index_options(table_name, column_name, options)
150
138
  execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} (#{quoted_column_names})#{tablespace} #{index_options}"
151
- if index_type == 'UNIQUE'
139
+ if index_type == "UNIQUE"
152
140
  unless quoted_column_names =~ /\(.*\)/
153
141
  execute "ALTER TABLE #{quote_table_name(table_name)} ADD CONSTRAINT #{quote_column_name(index_name)} #{index_type} (#{quoted_column_names})"
154
142
  end
@@ -173,29 +161,18 @@ module ActiveRecord
173
161
  if index_name.to_s.length > max_index_length
174
162
  raise ArgumentError, "Index name '#{index_name}' on table '#{table_name}' is too long; the limit is #{max_index_length} characters"
175
163
  end
176
- if index_name_exists?(table_name, index_name, false)
164
+ if table_exists?(table_name) && index_name_exists?(table_name, index_name)
177
165
  raise ArgumentError, "Index name '#{index_name}' on table '#{table_name}' already exists"
178
166
  end
179
167
 
180
168
  quoted_column_names = column_names.map { |e| quote_column_name_or_expression(e) }.join(", ")
181
- [index_name, index_type, quoted_column_names, tablespace, index_options]
169
+ [index_name, index_type, quoted_column_names, tablespace, index_options]
182
170
  end
183
171
 
184
172
  # Remove the given index from the table.
185
173
  # Gives warning if index does not exist
186
174
  def remove_index(table_name, options = {}) #:nodoc:
187
175
  index_name = index_name_for_remove(table_name, options)
188
- unless index_name_exists?(table_name, index_name, true)
189
- # sometimes options can be String or Array with column names
190
- options = {} unless options.is_a?(Hash)
191
- if options.has_key? :name
192
- options_without_column = options.dup
193
- options_without_column.delete :column
194
- index_name_without_column = index_name(table_name, options_without_column)
195
- return index_name_without_column if index_name_exists?(table_name, index_name_without_column, false)
196
- end
197
- raise ArgumentError, "Index name '#{index_name}' on table '#{table_name}' does not exist"
198
- end
199
176
  #TODO: It should execute only when index_type == "UNIQUE"
200
177
  execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{quote_column_name(index_name)}" rescue nil
201
178
  execute "DROP INDEX #{quote_column_name(index_name)}"
@@ -216,11 +193,11 @@ module ActiveRecord
216
193
 
217
194
  # leave just first three letters from each word
218
195
  if shortened_name.length > identifier_max_length
219
- shortened_name = shortened_name.split('_').map{|w| w[0,3]}.join('_')
196
+ shortened_name = shortened_name.split("_").map { |w| w[0, 3] }.join("_")
220
197
  end
221
198
  # generate unique name using hash function
222
199
  if shortened_name.length > identifier_max_length
223
- shortened_name = 'i'+Digest::SHA1.hexdigest(default_name)[0,identifier_max_length-1]
200
+ shortened_name = "i" + Digest::SHA1.hexdigest(default_name)[0, identifier_max_length - 1]
224
201
  end
225
202
  @logger.warn "#{adapter_name} shortened default index name #{default_name} to #{shortened_name}" if @logger
226
203
  shortened_name
@@ -232,7 +209,12 @@ module ActiveRecord
232
209
  # as there's no way to determine the correct answer in that case.
233
210
  #
234
211
  # Will always query database and not index cache.
235
- def index_name_exists?(table_name, index_name, default)
212
+ def index_name_exists?(table_name, index_name, default = nil)
213
+ unless default.nil?
214
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
215
+ Passing default to #index_name_exists? is deprecated without replacement.
216
+ MSG
217
+ end
236
218
  (owner, table_name, db_link) = @connection.describe(table_name)
237
219
  result = select_value(<<-SQL)
238
220
  SELECT 1 FROM all_indexes#{db_link} i
@@ -245,31 +227,23 @@ module ActiveRecord
245
227
  end
246
228
 
247
229
  def rename_index(table_name, old_name, new_name) #:nodoc:
248
- unless index_name_exists?(table_name, old_name, true)
249
- raise ArgumentError, "Index name '#{old_name}' on table '#{table_name}' does not exist"
250
- end
251
- if new_name.length > allowed_index_name_length
252
- raise ArgumentError, "Index name '#{new_name}' on table '#{table_name}' is too long; the limit is #{allowed_index_name_length} characters"
253
- end
230
+ validate_index_length!(table_name, new_name)
254
231
  execute "ALTER INDEX #{quote_column_name(old_name)} rename to #{quote_column_name(new_name)}"
255
232
  ensure
256
233
  self.all_schema_indexes = nil
257
234
  end
258
235
 
236
+ def add_reference(table_name, *args)
237
+ ActiveRecord::ConnectionAdapters::OracleEnhanced::ReferenceDefinition.new(*args).add_to(update_table_definition(table_name, self))
238
+ end
239
+
259
240
  def add_column(table_name, column_name, type, options = {}) #:nodoc:
260
- if type.to_sym == :virtual
261
- type = options[:type]
262
- end
263
241
  type = aliased_types(type.to_s, type)
264
- add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD #{quote_column_name(column_name)} "
265
- add_column_sql << type_to_sql(type, options[:limit], options[:precision], options[:scale]) if type
266
-
267
- add_column_options!(add_column_sql, options.merge(:type=>type, :column_name=>column_name, :table_name=>table_name))
268
-
269
- add_column_sql << tablespace_for((type_to_sql(type).downcase.to_sym), nil, table_name, column_name) if type
270
-
271
- execute(add_column_sql)
272
-
242
+ at = create_alter_table table_name
243
+ at.add_column(column_name, type, options)
244
+ add_column_sql = schema_creation.accept at
245
+ add_column_sql << tablespace_for((type_to_sql(type).downcase.to_sym), nil, table_name, column_name)
246
+ execute add_column_sql
273
247
  create_sequence_and_trigger(table_name, options) if type && type.to_sym == :primary_key
274
248
  change_column_comment(table_name, column_name, options[:comment]) if options.key?(:comment)
275
249
  ensure
@@ -294,7 +268,7 @@ module ActiveRecord
294
268
  execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
295
269
  end
296
270
 
297
- change_column table_name, column_name, column.sql_type, :null => null
271
+ change_column table_name, column_name, column.sql_type, null: null
298
272
  end
299
273
 
300
274
  def change_column(table_name, column_name, type, options = {}) #:nodoc:
@@ -308,14 +282,15 @@ module ActiveRecord
308
282
  if type.to_sym == :virtual
309
283
  type = options[:type]
310
284
  end
311
- change_column_sql = "ALTER TABLE #{quote_table_name(table_name)} MODIFY #{quote_column_name(column_name)} "
312
- change_column_sql << "#{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" if type
313
-
314
- add_column_options!(change_column_sql, options.merge(:type=>type, :column_name=>column_name, :table_name=>table_name))
315
-
316
- change_column_sql << tablespace_for((type_to_sql(type).downcase.to_sym), nil, options[:table_name], options[:column_name]) if type
317
285
 
286
+ td = create_table_definition(table_name)
287
+ cd = td.new_column_definition(column.name, type, options)
288
+ change_column_stmt = schema_creation.accept cd
289
+ change_column_stmt << tablespace_for((type_to_sql(type).downcase.to_sym), nil, options[:table_name], options[:column_name]) if type
290
+ change_column_sql = "ALTER TABLE #{quote_table_name(table_name)} MODIFY #{change_column_stmt}"
318
291
  execute(change_column_sql)
292
+
293
+ change_column_comment(table_name, column_name, options[:comment]) if options.key?(:comment)
319
294
  ensure
320
295
  clear_table_columns_cache(table_name)
321
296
  end
@@ -366,9 +341,9 @@ module ActiveRecord
366
341
  end
367
342
 
368
343
  # Maps logical Rails types to Oracle-specific data types.
369
- def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc:
344
+ def type_to_sql(type, limit: nil, precision: nil, scale: nil, **) #:nodoc:
370
345
  # Ignore options for :text and :binary columns
371
- return super(type, nil, nil, nil) if ['text', 'binary'].include?(type.to_s)
346
+ return super(type) if ["text", "binary"].include?(type.to_s)
372
347
 
373
348
  super
374
349
  end
@@ -382,28 +357,11 @@ module ActiveRecord
382
357
  SQL
383
358
  end
384
359
 
385
- def add_foreign_key(from_table, to_table, options = {})
386
- if options[:dependent]
387
- ActiveSupport::Deprecation.warn "`:dependent` option will be deprecated. Please use `:on_delete` option"
388
- end
389
- case options[:dependent]
390
- when :delete then options[:on_delete] = :cascade
391
- when :nullify then options[:on_delete] = :nullify
392
- else
393
- end
394
-
395
- super
396
- end
397
-
398
- def remove_foreign_key(from_table, options_or_to_table = {})
399
- super
400
- end
401
-
402
360
  # get table foreign keys for schema dump
403
361
  def foreign_keys(table_name) #:nodoc:
404
362
  (owner, desc_table_name, db_link) = @connection.describe(table_name)
405
363
 
406
- fk_info = select_all(<<-SQL, 'Foreign Keys')
364
+ fk_info = select_all(<<-SQL, "Foreign Keys")
407
365
  SELECT r.table_name to_table
408
366
  ,rc.column_name references_column
409
367
  ,cc.column_name
@@ -412,7 +370,7 @@ module ActiveRecord
412
370
  FROM all_constraints#{db_link} c, all_cons_columns#{db_link} cc,
413
371
  all_constraints#{db_link} r, all_cons_columns#{db_link} rc
414
372
  WHERE c.owner = '#{owner}'
415
- AND c.table_name = '#{desc_table_name}'
373
+ AND c.table_name = q'[#{desc_table_name}]'
416
374
  AND c.constraint_type = 'R'
417
375
  AND cc.owner = c.owner
418
376
  AND cc.constraint_name = c.constraint_name
@@ -426,19 +384,19 @@ module ActiveRecord
426
384
 
427
385
  fk_info.map do |row|
428
386
  options = {
429
- column: oracle_downcase(row['column_name']),
430
- name: oracle_downcase(row['name']),
431
- primary_key: oracle_downcase(row['references_column'])
387
+ column: oracle_downcase(row["column_name"]),
388
+ name: oracle_downcase(row["name"]),
389
+ primary_key: oracle_downcase(row["references_column"])
432
390
  }
433
- options[:on_delete] = extract_foreign_key_action(row['delete_rule'])
434
- OracleEnhanced::ForeignKeyDefinition.new(oracle_downcase(table_name), oracle_downcase(row['to_table']), options)
391
+ options[:on_delete] = extract_foreign_key_action(row["delete_rule"])
392
+ ActiveRecord::ConnectionAdapters::ForeignKeyDefinition.new(oracle_downcase(table_name), oracle_downcase(row["to_table"]), options)
435
393
  end
436
394
  end
437
395
 
438
396
  def extract_foreign_key_action(specifier) # :nodoc:
439
397
  case specifier
440
- when 'CASCADE'; :cascade
441
- when 'SET NULL'; :nullify
398
+ when "CASCADE"; :cascade
399
+ when "SET NULL"; :nullify
442
400
  end
443
401
  end
444
402
 
@@ -465,48 +423,52 @@ module ActiveRecord
465
423
  end
466
424
  end
467
425
 
468
- private
469
-
470
426
  def create_alter_table(name)
471
- OracleEnhanced::AlterTable.new create_table_definition(name, false, {})
427
+ ActiveRecord::ConnectionAdapters::OracleEnhanced::AlterTable.new create_table_definition(name, false, {})
472
428
  end
473
429
 
474
- def tablespace_for(obj_type, tablespace_option, table_name=nil, column_name=nil)
475
- tablespace_sql = ''
476
- if tablespace = (tablespace_option || default_tablespace_for(obj_type))
477
- tablespace_sql << if [:blob, :clob].include?(obj_type.to_sym)
478
- " LOB (#{quote_column_name(column_name)}) STORE AS #{column_name.to_s[0..10]}_#{table_name.to_s[0..14]}_ls (TABLESPACE #{tablespace})"
479
- else
480
- " TABLESPACE #{tablespace}"
430
+ def update_table_definition(table_name, base)
431
+ ActiveRecord::ConnectionAdapters::OracleEnhanced::Table.new(table_name, base)
432
+ end
433
+
434
+ private
435
+
436
+ def tablespace_for(obj_type, tablespace_option, table_name = nil, column_name = nil)
437
+ tablespace_sql = ""
438
+ if tablespace = (tablespace_option || default_tablespace_for(obj_type))
439
+ if [:blob, :clob].include?(obj_type.to_sym)
440
+ tablespace_sql << " LOB (#{quote_column_name(column_name)}) STORE AS #{column_name.to_s[0..10]}_#{table_name.to_s[0..14]}_ls (TABLESPACE #{tablespace})"
441
+ else
442
+ tablespace_sql << " TABLESPACE #{tablespace}"
443
+ end
481
444
  end
445
+ tablespace_sql
482
446
  end
483
- tablespace_sql
484
- end
485
447
 
486
- def default_tablespace_for(type)
487
- (default_tablespaces[type] || default_tablespaces[native_database_types[type][:name]]) rescue nil
488
- end
448
+ def default_tablespace_for(type)
449
+ (default_tablespaces[type] || default_tablespaces[native_database_types[type][:name]]) rescue nil
450
+ end
489
451
 
490
- def column_for(table_name, column_name)
491
- unless column = columns(table_name).find { |c| c.name == column_name.to_s }
492
- raise "No such column: #{table_name}.#{column_name}"
452
+ def column_for(table_name, column_name)
453
+ unless column = columns(table_name).find { |c| c.name == column_name.to_s }
454
+ raise "No such column: #{table_name}.#{column_name}"
455
+ end
456
+ column
493
457
  end
494
- column
495
- end
496
458
 
497
- def create_sequence_and_trigger(table_name, options)
498
- seq_name = options[:sequence_name] || default_sequence_name(table_name)
499
- seq_start_value = options[:sequence_start_value] || default_sequence_start_value
500
- execute "CREATE SEQUENCE #{quote_table_name(seq_name)} START WITH #{seq_start_value}"
459
+ def create_sequence_and_trigger(table_name, options)
460
+ seq_name = options[:sequence_name] || default_sequence_name(table_name)
461
+ seq_start_value = options[:sequence_start_value] || default_sequence_start_value
462
+ execute "CREATE SEQUENCE #{quote_table_name(seq_name)} START WITH #{seq_start_value}"
501
463
 
502
- create_primary_key_trigger(table_name, options) if options[:primary_key_trigger]
503
- end
464
+ create_primary_key_trigger(table_name, options) if options[:primary_key_trigger]
465
+ end
504
466
 
505
- def create_primary_key_trigger(table_name, options)
506
- seq_name = options[:sequence_name] || default_sequence_name(table_name)
507
- trigger_name = options[:trigger_name] || default_trigger_name(table_name)
508
- primary_key = options[:primary_key] || Base.get_primary_key(table_name.to_s.singularize)
509
- execute compress_lines(<<-SQL)
467
+ def create_primary_key_trigger(table_name, options)
468
+ seq_name = options[:sequence_name] || default_sequence_name(table_name)
469
+ trigger_name = options[:trigger_name] || default_trigger_name(table_name)
470
+ primary_key = options[:primary_key] || Base.get_primary_key(table_name.to_s.singularize)
471
+ execute compress_lines(<<-SQL)
510
472
  CREATE OR REPLACE TRIGGER #{quote_table_name(trigger_name)}
511
473
  BEFORE INSERT ON #{quote_table_name(table_name)} FOR EACH ROW
512
474
  BEGIN
@@ -517,28 +479,28 @@ module ActiveRecord
517
479
  END IF;
518
480
  END;
519
481
  SQL
520
- end
482
+ end
521
483
 
522
- def default_trigger_name(table_name)
523
- # truncate table name if necessary to fit in max length of identifier
524
- "#{table_name.to_s[0,table_name_length-4]}_pkt"
525
- end
484
+ def default_trigger_name(table_name)
485
+ # truncate table name if necessary to fit in max length of identifier
486
+ "#{table_name.to_s[0, table_name_length - 4]}_pkt"
487
+ end
526
488
 
527
- def rebuild_primary_key_index_to_default_tablespace(table_name, options)
528
- tablespace = default_tablespace_for(:index)
489
+ def rebuild_primary_key_index_to_default_tablespace(table_name, options)
490
+ tablespace = default_tablespace_for(:index)
529
491
 
530
- return unless tablespace
492
+ return unless tablespace
531
493
 
532
- index_name = Base.connection.select_value(
533
- "SELECT index_name FROM all_constraints
534
- WHERE table_name = #{quote(table_name.upcase)}
535
- AND constraint_type = 'P'
536
- AND owner = SYS_CONTEXT('userenv', 'current_schema')")
494
+ index_name = Base.connection.select_value(
495
+ "SELECT index_name FROM all_constraints
496
+ WHERE table_name = #{quote(table_name.upcase)}
497
+ AND constraint_type = 'P'
498
+ AND owner = SYS_CONTEXT('userenv', 'current_schema')")
537
499
 
538
- return unless index_name
500
+ return unless index_name
539
501
 
540
- execute("ALTER INDEX #{quote_column_name(index_name)} REBUILD TABLESPACE #{tablespace}")
541
- end
502
+ execute("ALTER INDEX #{quote_column_name(index_name)} REBUILD TABLESPACE #{tablespace}")
503
+ end
542
504
  end
543
505
  end
544
506
  end
@@ -16,7 +16,7 @@ module ActiveRecord
16
16
  # # ...
17
17
  # end
18
18
  #
19
- def add_primary_key_trigger(table_name, options={})
19
+ def add_primary_key_trigger(table_name, options = {})
20
20
  # call the same private method that is used for create_table :primary_key_trigger => true
21
21
  create_primary_key_trigger(table_name, options)
22
22
  end
@@ -50,8 +50,8 @@ module ActiveRecord
50
50
  # get synonyms for schema dump
51
51
  def synonyms #:nodoc:
52
52
  select_all("SELECT synonym_name, table_owner, table_name, db_link FROM all_synonyms where owner = SYS_CONTEXT('userenv', 'session_user')").collect do |row|
53
- OracleEnhanced::SynonymDefinition.new(oracle_downcase(row['synonym_name']),
54
- oracle_downcase(row['table_owner']), oracle_downcase(row['table_name']), oracle_downcase(row['db_link']))
53
+ OracleEnhanced::SynonymDefinition.new(oracle_downcase(row["synonym_name"]),
54
+ oracle_downcase(row["table_owner"]), oracle_downcase(row["table_name"]), oracle_downcase(row["db_link"]))
55
55
  end
56
56
  end
57
57
  end