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



3866
3867
3868
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3866

def limit_not_supported_types
  %i[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



3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3872

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?
  unless nil_condition
    empty_condition = _table_name.empty? ||
                      _column_name.empty? ||
                      _new_column_name.empty?
  end

  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)
      raise "Rename column failed : #{error_msg}" if error_msg && !error_msg.empty?

      raise StandardError.new('An unexpected error occurred during renaming the column')

    end

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