Class: ActiveRecord::ConnectionAdapters::IBM_DB2_ZOS

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

Overview

module HostedDataServer

Direct Known Subclasses

IBM_DB2_ZOS_8

Instance Method Summary collapse

Methods inherited from IBM_DB2

#change_column, #execute, #get_datetime_mapping, #get_double_mapping, #get_time_mapping, #last_generated_id, #primary_key, #query_offset_limit, #select, #select_rows, #set_binary_value, #set_case, #set_text_default

Methods inherited from IBM_DataServer

#check_reserved_words, #execute, #get_datetime_mapping, #get_double_mapping, #get_time_mapping, #initialize, #last_generated_id, #limit_not_supported_types, #query_offset_limit, #reorg_table, #select, #select_rows, #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

#change_column_default(table_name, column_name, default) ⇒ Object



1961
1962
1963
1964
1965
1966
1967
1968
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1961

def change_column_default(table_name, column_name, default)
  unless default
    raise NotImplementedError,
    "DB2 for zOS data server version 9 does not support changing the column default to NULL"
  else
    super
  end
end

#change_column_null(table_name, column_name, null, default) ⇒ Object

Raises:

  • (NotImplementedError)


1970
1971
1972
1973
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1970

def change_column_null(table_name, column_name, null, default)
  raise NotImplementedError,
  "DB2 for zOS data server does not support changing the column's nullability"
end

#create_index_after_table(table_name, column_name) ⇒ Object

since v9 doesn’t need, suggest putting it in HostedDataServer?



1910
1911
1912
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1910

def create_index_after_table(table_name,column_name)
  @adapter.add_index(table_name, column_name, :unique => true) 
end

#remove_column(table_name, column_name) ⇒ Object

Raises:

  • (NotImplementedError)


1914
1915
1916
1917
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1914

def remove_column(table_name, column_name)
  raise NotImplementedError,
  "remove_column is not supported by the DB2 for zOS data server"
end

#rename_column(table_name, column_name, new_column_name) ⇒ Object

Alter table column for renaming a column



1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1920

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

#set_binary_default(value) ⇒ Object

DB2 z/OS only allows NULL or “” (empty) string as DEFAULT value for a BLOB column. For non-empty string and non-NULL values, the server returns error



1957
1958
1959
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1957

def set_binary_default(value)
  "#{value}"
end