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, ar3) ⇒ 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, ar3) ⇒ IBM_DataServer
Returns a new instance of IBM_DataServer.
2016 2017 2018 2019 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2016 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2160 2161 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2160 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2163 2164 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2163 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2033 2034 2035 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2033 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2024 2025 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2024 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2125 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
2151 2152 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2151 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2157 2158 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2157 def get_double_mapping end |
#get_time_mapping ⇒ Object
2154 2155 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2154 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2021 2022 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2021 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2178 2179 2180 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2178 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2108 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
2145 2146 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2145 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2148 2149 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2148 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
2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2039 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
2030 2031 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2030 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2055 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 if(@isAr3) while single_hash = IBM_DB.fetch_assoc(stmt) # Add the record to the +results+ array results << single_hash end else while single_hash = IBM_DB.fetch_array(stmt) # Add the record to the +results+ array results << single_hash end 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
2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2085 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
2166 2167 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2166 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2169 2170 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2169 def set_binary_value end |
#set_case(value) ⇒ Object
2175 2176 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2175 def set_case(value) end |
#set_schema(schema) ⇒ Object
2141 2142 2143 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2141 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2172 2173 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2172 def set_text_default end |
#setup_for_lob_table ⇒ Object
2027 2028 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2027 def setup_for_lob_table () end |