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

#query_offset_limit, #reorg_table

Methods inherited from IBM_DB2

#change_column, #change_column_default, #change_column_null, #execute, #get_datetime_mapping, #get_double_mapping, #get_time_mapping, #last_generated_id, #primary_key, #query_offset_limit, #select, #select_rows, #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, #query_offset_limit, #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_DataServer

Instance Method Details

#limit_not_supported_typesObject

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



1848
1849
1850
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1848

def limit_not_supported_types
  [:integer, :double, :date, :time, :xml]
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



1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1854

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.conn_errormsg 
      error_msg = IBM_DB.stmt_errormsg if error_msg.empty?
      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