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.
2179 2180 2181 2182 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2179 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2326 2327 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2326 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2329 2330 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2329 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2196 2197 2198 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2196 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2187 2188 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2187 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2288 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
2317 2318 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2317 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2323 2324 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2323 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2311 2312 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2311 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2320 2321 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2320 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2184 2185 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2184 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2344 2345 2346 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2344 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2271 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
2308 2309 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2308 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2314 2315 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2314 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
2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2202 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
2193 2194 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2193 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2218 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.message}" if !fetch_error..empty? raise error_msg end end return results end |
#select_rows(sql, name, stmt, results) ⇒ Object
2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2248 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
2332 2333 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2332 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2335 2336 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2335 def set_binary_value end |
#set_case(value) ⇒ Object
2341 2342 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2341 def set_case(value) end |
#set_schema(schema) ⇒ Object
2304 2305 2306 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2304 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2338 2339 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2338 def set_text_default end |
#setup_for_lob_table ⇒ Object
2190 2191 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2190 def setup_for_lob_table () end |