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
Akhil Tcheck for if_exits added so that it will try to drop even if the table does not exit.
- #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.
2522 2523 2524 2525 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2522 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2690 2691 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2690 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2693 2694 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2693 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2539 2540 2541 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2539 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2530 2531 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2530 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
Akhil Tcheck for if_exits added so that it will try to drop even if the table does not exit.
2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2632 def execute(sql, name = nil) if name == nil || name.class == String 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 else if name[:if_exists] IBM_DB.exec(@adapter.connection, sql) else 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 end end |
#get_datetime_mapping ⇒ Object
2681 2682 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2681 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2687 2688 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2687 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2675 2676 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2675 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2684 2685 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2684 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2527 2528 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2527 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2708 2709 2710 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2708 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2614 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
2672 2673 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2672 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2678 2679 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2678 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
2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2545 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
2536 2537 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2536 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 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 2561 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
2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2591 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
2696 2697 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2696 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2699 2700 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2699 def set_binary_value end |
#set_case(value) ⇒ Object
2705 2706 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2705 def set_case(value) end |
#set_schema(schema) ⇒ Object
2668 2669 2670 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2668 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2702 2703 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2702 def set_text_default end |
#setup_for_lob_table ⇒ Object
2533 2534 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2533 def setup_for_lob_table () end |