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.
2482 2483 2484 2485 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2482 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2629 2630 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2629 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2632 2633 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2632 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2499 2500 2501 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2499 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2490 2491 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2490 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2591 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
2620 2621 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2620 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2626 2627 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2626 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2614 2615 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2614 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2623 2624 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2623 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2487 2488 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2487 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2647 2648 2649 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2647 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2574 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
2611 2612 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2611 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2617 2618 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2617 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
2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2505 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
2496 2497 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2496 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2521 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
2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2551 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
2635 2636 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2635 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2638 2639 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2638 def set_binary_value end |
#set_case(value) ⇒ Object
2644 2645 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2644 def set_case(value) end |
#set_schema(schema) ⇒ Object
2607 2608 2609 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2607 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2641 2642 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2641 def set_text_default end |
#setup_for_lob_table ⇒ Object
2493 2494 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2493 def setup_for_lob_table () end |