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.
1845 1846 1847 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1845 def initialize(adapter) @adapter = adapter end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
1981 1982 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1981 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
1984 1985 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1984 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
1861 1862 1863 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1861 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
1852 1853 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1852 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1946 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
1972 1973 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1972 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
1978 1979 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1978 def get_double_mapping end |
#get_time_mapping ⇒ Object
1975 1976 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1975 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
1849 1850 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1849 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
1999 2000 2001 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1999 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1929 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
1966 1967 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1966 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
1969 1970 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1969 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
1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1867 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
1858 1859 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1858 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1883 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..empty? raise error_msg end end return results end |
#select_rows(sql, name, stmt, results) ⇒ Object
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 1906 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..empty? raise error_msg end end return results end |
#set_binary_default(value) ⇒ Object
1987 1988 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1987 def set_binary_default(value) end |
#set_binary_value ⇒ Object
1990 1991 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1990 def set_binary_value end |
#set_case(value) ⇒ Object
1996 1997 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1996 def set_case(value) end |
#set_schema(schema) ⇒ Object
1962 1963 1964 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1962 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
1993 1994 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1993 def set_text_default end |
#setup_for_lob_table ⇒ Object
1855 1856 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1855 def setup_for_lob_table () end |