Class: ActiveRecord::ConnectionAdapters::IBM_DB2_LUW_COBRA

Inherits:
IBM_DB2_LUW show all
Defined in:
lib/active_record/connection_adapters/ibm_db_adapter.rb

Overview

class IBM_DB2_LUW

Instance Method Summary collapse

Methods inherited from IBM_DB2_LUW

#reorg_table

Methods inherited from IBM_DB2

#change_column, #change_column_default, #change_column_null, #extract_new_default_value, #get_datetime_mapping, #get_double_mapping, #get_time_mapping, #initialize, #last_generated_id, #primary_key_definition, #set_binary_default, #set_binary_value, #set_case, #set_text_default

Methods inherited from IBM_DataServer

#change_column_default, #change_column_null, #check_reserved_words, #create_index_after_table, #execute, #get_datetime_mapping, #get_double_mapping, #get_time_mapping, #initialize, #last_generated_id, #prepare, #remove_column, #reorg_table, #select, #select_rows, #set_binary_default, #set_binary_value, #set_case, #set_schema, #set_text_default, #setup_for_lob_table

Constructor Details

This class inherits a constructor from ActiveRecord::ConnectionAdapters::IBM_DB2

Instance Method Details

#limit_not_supported_typesObject

Cobra supports parameterised timestamp, hence overriding following method to allow timestamp datatype to be parameterised



3302
3303
3304
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3302

def limit_not_supported_types
  [:integer, :double, :date, :time, :xml, :bigint]
end

#rename_column(table_name, column_name, new_column_name) ⇒ Object

Alter table column for renaming a column This feature is supported for against DB2 V97 and above only



3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3308

def rename_column(table_name, column_name, new_column_name)
  _table_name      = table_name.to_s
  _column_name     = column_name.to_s
  _new_column_name = new_column_name.to_s

  nil_condition    = _table_name.nil? || _column_name.nil? || _new_column_name.nil?
  empty_condition  = _table_name.empty? || 
                       _column_name.empty? || 
                         _new_column_name.empty? unless nil_condition

  if nil_condition || empty_condition
    raise ArgumentError,"One of the arguments passed to rename_column is empty or nil"
  end

  begin
    rename_column_sql = "ALTER TABLE #{_table_name} RENAME COLUMN #{_column_name} \
             TO #{_new_column_name}"

    unless stmt = execute(rename_column_sql)
      error_msg = IBM_DB.getErrormsg(@adapter.connection, IBM_DB::DB_CONN )
      if error_msg && !error_msg.empty?
        raise "Rename column failed : #{error_msg}"
      else
        raise StandardError.new('An unexpected error occurred during renaming the column')
      end
    end

    reorg_table(_table_name)

  ensure
    IBM_DB.free_stmt(stmt) if stmt
  end #End of begin
end