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.
2566 2567 2568 2569 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2566 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2734 2735 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2734 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2737 2738 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2737 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2583 2584 2585 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2583 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2574 2575 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2574 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.
2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2676 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
2725 2726 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2725 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2731 2732 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2731 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2719 2720 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2719 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2728 2729 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2728 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2571 2572 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2571 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2752 2753 2754 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2752 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2658 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
2716 2717 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2716 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2722 2723 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2722 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
2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2589 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
2580 2581 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2580 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2605 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
2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2635 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
2740 2741 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2740 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2743 2744 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2743 def set_binary_value end |
#set_case(value) ⇒ Object
2749 2750 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2749 def set_case(value) end |
#set_schema(schema) ⇒ Object
2712 2713 2714 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2712 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2746 2747 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2746 def set_text_default end |
#setup_for_lob_table ⇒ Object
2577 2578 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2577 def setup_for_lob_table () end |