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.



1867
1868
1869
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1867

def initialize(adapter)
  @adapter = adapter
end

Instance Method Details

#change_column_default(table_name, column_name, default) ⇒ Object



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

def change_column_default(table_name, column_name, default)
end

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



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

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

#check_reserved_words(col_name) ⇒ Object



1883
1884
1885
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1883

def check_reserved_words(col_name)
  col_name
end

#create_index_after_table(table_name, cloumn_name) ⇒ Object



1874
1875
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1874

def create_index_after_table (table_name,cloumn_name)
end

#execute(sql, name = nil) ⇒ Object



1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1968

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



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

def get_datetime_mapping
end

#get_double_mappingObject



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

def get_double_mapping
end

#get_time_mappingObject



1997
1998
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1997

def get_time_mapping
end

#last_generated_id(stmt) ⇒ Object



1871
1872
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1871

def last_generated_id(stmt)
end

#limit_not_supported_typesObject



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

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

#prepare(sql, name = nil) ⇒ Object

Praveen



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

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



1988
1989
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1988

def query_offset_limit(sql, offset, limit)
end

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



1991
1992
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1991

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



1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1889

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



1880
1881
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1880

def reorg_table(table_name)
end

#select(stmt) ⇒ Object



1905
1906
1907
1908
1909
1910
1911
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 1905

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



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

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



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

def set_binary_default(value)
end

#set_binary_valueObject



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

def set_binary_value
end

#set_case(value) ⇒ Object



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

def set_case(value)
end

#set_schema(schema) ⇒ Object



1984
1985
1986
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1984

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

#set_text_defaultObject



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

def set_text_default
end

#setup_for_lob_tableObject



1877
1878
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1877

def setup_for_lob_table ()
end