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.
2562 2563 2564 2565 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2562 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2730 2731 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2730 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2733 2734 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2733 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2579 2580 2581 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2579 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2570 2571 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2570 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.
2672 2673 2674 2675 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 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2672 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
2721 2722 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2721 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2727 2728 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2727 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2715 2716 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2715 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2724 2725 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2724 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2567 2568 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2567 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2748 2749 2750 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2748 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2654 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
2712 2713 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2712 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2718 2719 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2718 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
2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2585 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
2576 2577 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2576 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2601 2602 2603 2604 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 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2601 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
2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2631 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
2736 2737 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2736 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2739 2740 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2739 def set_binary_value end |
#set_case(value) ⇒ Object
2745 2746 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2745 def set_case(value) end |
#set_schema(schema) ⇒ Object
2708 2709 2710 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2708 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2742 2743 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2742 def set_text_default end |
#setup_for_lob_table ⇒ Object
2573 2574 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2573 def setup_for_lob_table () end |