Class: ActiveRecord::ConnectionAdapters::IBM_DataServer

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

Overview

This class contains common code across DB’s (DB2 LUW, zOS, i5 and IDS)

Direct Known Subclasses

IBM_DB2, IBM_IDS

Instance Method Summary collapse

Constructor Details

#initialize(adapter, ar3) ⇒ IBM_DataServer

Returns a new instance of IBM_DataServer.



1994
1995
1996
1997
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1994

def initialize(adapter, ar3)
  @adapter = adapter
    @isAr3 = ar3
end

Instance Method Details

#change_column_default(table_name, column_name, default) ⇒ Object



2138
2139
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2138

def change_column_default(table_name, column_name, default)
end

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



2141
2142
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2141

def change_column_null(table_name, column_name, null, default)
end

#check_reserved_words(col_name) ⇒ Object



2011
2012
2013
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2011

def check_reserved_words(col_name)
  col_name.to_s
end

#create_index_after_table(table_name, cloumn_name) ⇒ Object



2002
2003
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2002

def create_index_after_table (table_name,cloumn_name)
end

#execute(sql, name = nil) ⇒ Object



2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2103

def execute(sql, name = nil)
  begin
    if stmt = IBM_DB.exec(@adapter.connection, sql)
      stmt   # Return the statement object
    else
      raise StatementInvalid, IBM_DB.getErrormsg(@adapter.connection, IBM_DB::DB_CONN )
    end
  rescue StandardError => exec_err
    if exec_err && !exec_err.message.empty?
      raise "Failed to execute statement due to: #{exec_err}"
    else 
      raise
    end
  end
end

#get_datetime_mappingObject



2129
2130
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2129

def get_datetime_mapping
end

#get_double_mappingObject



2135
2136
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2135

def get_double_mapping
end

#get_time_mappingObject



2132
2133
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2132

def get_time_mapping
end

#last_generated_id(stmt) ⇒ Object



1999
2000
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1999

def last_generated_id(stmt)
end

#limit_not_supported_typesObject



2156
2157
2158
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2156

def limit_not_supported_types
  [:integer, :double, :date, :time, :timestamp, :xml, :bigint]
end

#prepare(sql, name = nil) ⇒ Object

Praveen



2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2086

def prepare(sql,name = nil)
  begin
    stmt = IBM_DB.prepare(@adapter.connection, sql)
    if( stmt )
      stmt
    else
      raise StatementInvalid, IBM_DB.getErrormsg(@adapter.connection, IBM_DB::DB_CONN )
    end
  rescue StandardError => prep_err
    if prep_err && !prep_err.message.empty?
      raise "Failed to prepare sql #{sql} due to: #{prep_err}"
    else 
      raise
    end
  end
end

#query_offset_limit(sql, offset, limit) ⇒ Object



2123
2124
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2123

def query_offset_limit(sql, offset, limit)
end

#query_offset_limit!(sql, offset, limit, options) ⇒ Object



2126
2127
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2126

def query_offset_limit!(sql, offset, limit, options)
end

#remove_column(table_name, column_name) ⇒ Object

This is supported by the DB2 for Linux, UNIX, Windows data servers and by the DB2 for i5 data servers



2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2017

def remove_column(table_name, column_name)
  begin
    @adapter.execute "ALTER TABLE #{table_name} DROP #{column_name}"
    reorg_table(table_name)
  rescue StandardError => exec_err
    # Provide details on the current XML columns support
    if exec_err.message.include?('SQLCODE=-1242') && exec_err.message.include?('42997')
      raise StatementInvalid, 
            "A column that is part of a table containing an XML column cannot be dropped. \
To remove the column, the table must be dropped and recreated without the #{column_name} column: #{exec_err}"
    else
      raise "#{exec_err}"
    end
  end
end

#reorg_table(table_name) ⇒ Object



2008
2009
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2008

def reorg_table(table_name)
end

#select(stmt) ⇒ Object



2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2033

def select(stmt)
  results = []
  # Fetches all the results available. IBM_DB.fetch_assoc(stmt) returns
  # an hash for each single record.
  # The loop stops when there aren't any more valid records to fetch
  begin
  if(@isAr3)
      while single_hash = IBM_DB.fetch_assoc(stmt)
        # Add the record to the +results+ array
        results <<  single_hash
      end
    else
      while single_hash = IBM_DB.fetch_array(stmt)
        # Add the record to the +results+ array
        results <<  single_hash
      end
    end
  rescue StandardError => fetch_error # Handle driver fetch errors
    error_msg = IBM_DB.getErrormsg(stmt, IBM_DB::DB_STMT )
    if error_msg && !error_msg.empty?
      raise StatementInvalid,"Failed to retrieve data: #{error_msg}"
    else
      error_msg = "An unexpected error occurred during data retrieval"
      error_msg = error_msg + ": #{fetch_error.message}" if !fetch_error.message.empty?
      raise error_msg
    end
  end
  return results
end

#select_rows(sql, name, stmt, results) ⇒ Object



2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2063

def select_rows(sql, name, stmt, results)
  # Fetches all the results available. IBM_DB.fetch_array(stmt) returns
  # an array representing a row in a result set.
  # The loop stops when there aren't any more valid records to fetch
  begin
    while single_array = IBM_DB.fetch_array(stmt)
      #Add the array to results array
      results <<  single_array
    end
  rescue StandardError => fetch_error # Handle driver fetch errors
    error_msg = IBM_DB.getErrormsg(stmt, IBM_DB::DB_STMT )
    if error_msg && !error_msg.empty?
      raise StatementInvalid,"Failed to retrieve data: #{error_msg}"
    else
      error_msg = "An unexpected error occurred during data retrieval"
      error_msg = error_msg + ": #{fetch_error.message}" if !fetch_error.message.empty?
      raise error_msg
    end
  end
  return results
end

#set_binary_default(value) ⇒ Object



2144
2145
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2144

def set_binary_default(value)
end

#set_binary_valueObject



2147
2148
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2147

def set_binary_value
end

#set_case(value) ⇒ Object



2153
2154
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2153

def set_case(value)
end

#set_schema(schema) ⇒ Object



2119
2120
2121
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2119

def set_schema(schema)
  @adapter.execute("SET SCHEMA #{schema}")
end

#set_text_defaultObject



2150
2151
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2150

def set_text_default
end

#setup_for_lob_tableObject



2005
2006
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2005

def setup_for_lob_table ()
end