Class: ActiveRecord::ConnectionAdapters::IBM_DataServer
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::IBM_DataServer
- 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)
Instance Method Summary collapse
- #change_column_default(table_name, column_name, default) ⇒ Object
- #change_column_null(table_name, column_name, null, default) ⇒ Object
- #check_reserved_words(col_name) ⇒ Object
- #create_index_after_table(table_name, cloumn_name) ⇒ Object
- #execute(sql, name = nil) ⇒ Object
- #get_datetime_mapping ⇒ Object
- #get_double_mapping ⇒ Object
- #get_time_mapping ⇒ Object
-
#initialize(adapter) ⇒ IBM_DataServer
constructor
A new instance of IBM_DataServer.
- #last_generated_id(stmt) ⇒ Object
- #limit_not_supported_types ⇒ Object
-
#prepare(sql, name = nil) ⇒ Object
Praveen.
- #query_offset_limit(sql, offset, limit) ⇒ Object
- #query_offset_limit!(sql, offset, limit, options) ⇒ Object
-
#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.
- #reorg_table(table_name) ⇒ Object
- #select(stmt) ⇒ Object
- #select_rows(sql, name, stmt, results) ⇒ Object
- #set_binary_default(value) ⇒ Object
- #set_binary_value ⇒ Object
- #set_case(value) ⇒ Object
- #set_schema(schema) ⇒ Object
- #set_text_default ⇒ Object
- #setup_for_lob_table ⇒ Object
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..empty? raise "Failed to execute statement due to: #{exec_err}" else raise end end end |
#get_datetime_mapping ⇒ Object
2017 2018 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2017 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2023 2024 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2023 def get_double_mapping end |
#get_time_mapping ⇒ Object
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_types ⇒ Object
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..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, ) 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..include?('SQLCODE=-1242') && exec_err..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.}" if !fetch_error..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.}" if !fetch_error..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_value ⇒ Object
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_default ⇒ Object
2038 2039 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2038 def set_text_default end |
#setup_for_lob_table ⇒ Object
1900 1901 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1900 def setup_for_lob_table () end |