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) ⇒ IBM_DataServer

Returns a new instance of IBM_DataServer.



1890
1891
1892
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1890

def initialize(adapter)
  @adapter = adapter
end

Instance Method Details

#change_column_default(table_name, column_name, default) ⇒ Object



2026
2027
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2026

def change_column_default(table_name, column_name, default)
end

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



2029
2030
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2029

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

#check_reserved_words(col_name) ⇒ Object



1906
1907
1908
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1906

def check_reserved_words(col_name)
  col_name.to_s
end

#create_index_after_table(table_name, cloumn_name) ⇒ Object



1897
1898
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1897

def create_index_after_table (table_name,cloumn_name)
end

#execute(sql, name = nil) ⇒ Object



1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1991

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



2017
2018
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2017

def get_datetime_mapping
end

#get_double_mappingObject



2023
2024
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2023

def get_double_mapping
end

#get_time_mappingObject



2020
2021
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2020

def get_time_mapping
end

#last_generated_id(stmt) ⇒ Object



1894
1895
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1894

def last_generated_id(stmt)
end

#limit_not_supported_typesObject



2044
2045
2046
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2044

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

#prepare(sql, name = nil) ⇒ Object

Praveen



1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1974

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



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

def query_offset_limit(sql, offset, limit)
end

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



2014
2015
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2014

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



1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1912

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



1903
1904
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1903

def reorg_table(table_name)
end

#select(stmt) ⇒ Object



1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1928

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
    while single_hash = IBM_DB.fetch_assoc(stmt)
      # Add the record to the +results+ array
      results <<  single_hash
    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



1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1951

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



2032
2033
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2032

def set_binary_default(value)
end

#set_binary_valueObject



2035
2036
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2035

def set_binary_value
end

#set_case(value) ⇒ Object



2041
2042
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2041

def set_case(value)
end

#set_schema(schema) ⇒ Object



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

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

#set_text_defaultObject



2038
2039
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2038

def set_text_default
end

#setup_for_lob_tableObject



1900
1901
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1900

def setup_for_lob_table ()
end