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.
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..empty? raise "Failed to execute statement due to: #{exec_err}" else raise end end end |
#get_datetime_mapping ⇒ Object
1994 1995 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1994 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2000 2001 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2000 def get_double_mapping end |
#get_time_mapping ⇒ Object
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_types ⇒ Object
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..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, ) 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..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
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.}" if !fetch_error..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.}" if !fetch_error..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_value ⇒ Object
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_default ⇒ Object
2015 2016 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2015 def set_text_default end |
#setup_for_lob_table ⇒ Object
1877 1878 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1877 def setup_for_lob_table () end |