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) ⇒ IBM_DataServer

Returns a new instance of IBM_DataServer.



1363
1364
1365
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1363

def initialize(adapter)
  @adapter = adapter
end

Instance Method Details

#change_column_default(table_name, column_name, default) ⇒ Object



1478
1479
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1478

def change_column_default(table_name, column_name, default)
end

#change_column_null(table_name, column_name, null, default) ⇒ Object



1481
1482
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1481

def change_column_null(table_name, column_name, null, default)
end

#check_reserved_words(col_name) ⇒ Object



1379
1380
1381
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1379

def check_reserved_words(col_name)
  col_name
end

#create_index_after_table(table_name, cloumn_name) ⇒ Object



1370
1371
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1370

def create_index_after_table (table_name,cloumn_name)
end

#execute(sql, name = nil) ⇒ Object



1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1445

def execute(sql, name = nil)
  begin
    if stmt = IBM_DB.exec(@adapter.connection, sql)
      stmt   # Return the statement object
    else
      raise StatementInvalid, IBM_DB.stmt_errormsg
    end
  rescue StandardError
    error_msg = IBM_DB.conn_errormsg
    if error_msg && !error_msg.empty?
      raise "Failed to execute statement due to communication error: #{error_msg}"
    else 
      raise
    end
  end
end

#get_datetime_mappingObject



1469
1470
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1469

def get_datetime_mapping
end

#get_double_mappingObject



1475
1476
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1475

def get_double_mapping
end

#get_time_mappingObject



1472
1473
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1472

def get_time_mapping
end

#last_generated_id(stmt) ⇒ Object



1367
1368
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1367

def last_generated_id(stmt)
end

#limit_not_supported_typesObject



1496
1497
1498
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1496

def limit_not_supported_types
  [:integer, :double, :date, :time, :timestamp, :xml]
end

#query_offset_limit(sql, offset, limit) ⇒ Object



1466
1467
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1466

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



1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1385

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



1376
1377
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1376

def reorg_table(table_name)
end

#select(sql, name, stmt, results) ⇒ Object



1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1401

def select(sql, name, 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
    while single_hash = IBM_DB.fetch_assoc(stmt)
      # Add the record to the +results+ array
      results <<  single_hash
    end
  rescue StandardError  # Handle driver fetch errors
    error_msg = IBM_DB.conn_errormsg 
    error_msg = IBM_DB.stmt_errormsg if error_msg.empty?
    if error_msg && !error_msg.empty?
      raise StatementInvalid,"Failed to retrieve data: #{error_msg}"
    else
      raise "An unexpected error occurred during data retrieval"
    end
  ensure  # Free resources associated with the statement
    IBM_DB.free_result(stmt)
  end
end

#select_rows(sql, name, stmt, results) ⇒ Object



1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1423

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  # Handle driver fetch errors
    error_msg = IBM_DB.conn_errormsg 
    error_msg = IBM_DB.stmt_errormsg if error_msg.empty?
    if error_msg && !error_msg.empty?
      raise StatementInvalid,"Failed to retrieve data: #{error_msg}"
    else
      raise "An unexpected error occurred during data retrieval"
    end
  ensure  # Free resources associated with the statement
    IBM_DB.free_result(stmt)
  end
end

#set_binary_default(value) ⇒ Object



1484
1485
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1484

def set_binary_default(value)
end

#set_binary_valueObject



1487
1488
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1487

def set_binary_value
end

#set_case(value) ⇒ Object



1493
1494
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1493

def set_case(value)
end

#set_schema(schema) ⇒ Object



1462
1463
1464
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1462

def set_schema(schema)
  @adapter.execute("SET SCHEMA #{schema}")
end

#set_text_defaultObject



1490
1491
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1490

def set_text_default
end

#setup_for_lob_tableObject



1373
1374
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1373

def setup_for_lob_table ()
end