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_limit_offset_clauses(limit, offset) ⇒ 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.
2164 2165 2166 2167 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2164 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2311 2312 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2311 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2314 2315 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2314 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2181 2182 2183 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2181 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2172 2173 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2172 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2273 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
2302 2303 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2302 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2308 2309 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2308 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2296 2297 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2296 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2305 2306 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2305 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2169 2170 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2169 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2329 2330 2331 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2329 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2256 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
2293 2294 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2293 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2299 2300 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2299 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
2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2187 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
2178 2179 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2178 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2203 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
2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2233 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
2317 2318 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2317 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2320 2321 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2320 def set_binary_value end |
#set_case(value) ⇒ Object
2326 2327 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2326 def set_case(value) end |
#set_schema(schema) ⇒ Object
2289 2290 2291 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2289 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2323 2324 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2323 def set_text_default end |
#setup_for_lob_table ⇒ Object
2175 2176 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2175 def setup_for_lob_table () end |