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, #extract_new_default_value, #get_datetime_mapping, #get_double_mapping, #get_time_mapping, #initialize, #last_generated_id, #primary_key_definition, #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, #prepare, #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_DB2

Instance Method Details

#change_column_default(table_name, column_name, default) ⇒ Object



3976
3977
3978
3979
3980
3981
3982
3983
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3976

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

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

Raises:

  • (NotImplementedError)


3985
3986
3987
3988
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3985

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?



3926
3927
3928
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3926

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)


3930
3931
3932
3933
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3930

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



3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3936

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

#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



3972
3973
3974
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3972

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