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.
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_mapping ⇒ Object
1469 1470 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1469 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
1475 1476 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1475 def get_double_mapping end |
#get_time_mapping ⇒ Object
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_types ⇒ Object
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..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
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_value ⇒ Object
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_default ⇒ Object
1490 1491 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1490 def set_text_default end |
#setup_for_lob_table ⇒ Object
1373 1374 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1373 def setup_for_lob_table () end |