Class: ActiveRecord::ConnectionAdapters::IBM_DataServer

Inherits:
Object
  • Object
show all
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)

Direct Known Subclasses

IBM_DB2, IBM_IDS

Instance Method Summary collapse

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.message.empty?
      raise "Failed to execute statement due to: #{exec_err}"
    else 
      raise
    end
  end
end

#get_datetime_mappingObject



2620
2621
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2620

def get_datetime_mapping
end

#get_double_mappingObject



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_mappingObject



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_typesObject



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.message.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, options)
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.message.include?('SQLCODE=-1242') && exec_err.message.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.message}" if !fetch_error.message.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.message}" if !fetch_error.message.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_valueObject



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_defaultObject



2641
2642
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2641

def set_text_default
end

#setup_for_lob_tableObject



2493
2494
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2493

def setup_for_lob_table ()
end