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, #get_datetime_mapping, #get_double_mapping, #get_limit_offset_clauses, #get_time_mapping, #initialize, #last_generated_id, #primary_key_definition, #query_offset_limit, #query_offset_limit!, #set_binary_value, #set_case, #set_text_default

Methods inherited from IBM_DataServer

#check_reserved_words, #execute, #get_datetime_mapping, #get_double_mapping, #get_limit_offset_clauses, #get_time_mapping, #initialize, #last_generated_id, #limit_not_supported_types, #prepare, #query_offset_limit, #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_DB2

Instance Method Details

#change_column_default(table_name, column_name, default) ⇒ Object



3081
3082
3083
3084
3085
3086
3087
3088
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3081

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)


3090
3091
3092
3093
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3090

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?



3031
3032
3033
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3031

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)


3035
3036
3037
3038
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3035

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



3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3041

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

#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



3077
3078
3079
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3077

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