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
- #get_datetime_mapping ⇒ Object
- #get_double_mapping ⇒ Object
- #get_time_mapping ⇒ Object
-
#initialize(adapter) ⇒ IBM_DataServer
constructor
A new instance of IBM_DataServer.
- #last_generated_id(stmt) ⇒ Object
- #limit_not_supported_types ⇒ Object
- #query_offset_limit(sql, offset, limit) ⇒ 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(sql, name, stmt, results) ⇒ 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) ⇒ IBM_DataServer
Returns a new instance of IBM_DataServer.
1395 1396 1397 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1395 def initialize(adapter) @adapter = adapter end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
1510 1511 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1510 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
1513 1514 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1513 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
1411 1412 1413 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1411 def check_reserved_words(col_name) col_name end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
1402 1403 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1402 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1477 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_mapping ⇒ Object
1501 1502 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1501 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
1507 1508 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1507 def get_double_mapping end |
#get_time_mapping ⇒ Object
1504 1505 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1504 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
1399 1400 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1399 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
1528 1529 1530 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1528 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml] end |
#query_offset_limit(sql, offset, limit) ⇒ Object
1498 1499 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1498 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
1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1417 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
1408 1409 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1408 def reorg_table(table_name) end |
#select(sql, name, stmt, results) ⇒ Object
1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1433 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
1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1455 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
1516 1517 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1516 def set_binary_default(value) end |
#set_binary_value ⇒ Object
1519 1520 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1519 def set_binary_value end |
#set_case(value) ⇒ Object
1525 1526 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1525 def set_case(value) end |
#set_schema(schema) ⇒ Object
1494 1495 1496 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1494 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
1522 1523 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1522 def set_text_default end |
#setup_for_lob_table ⇒ Object
1405 1406 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1405 def setup_for_lob_table () end |