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
-
#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(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.
1642 1643 1644 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1642 def initialize(adapter) @adapter = adapter end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
1775 1776 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1775 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
1778 1779 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1778 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
1658 1659 1660 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1658 def check_reserved_words(col_name) col_name end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
1649 1650 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1649 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1740 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..empty? raise "Failed to execute statement due to: #{exec_err}" else raise end end end |
#get_datetime_mapping ⇒ Object
1766 1767 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1766 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
1772 1773 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1772 def get_double_mapping end |
#get_time_mapping ⇒ Object
1769 1770 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1769 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
1646 1647 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1646 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
1793 1794 1795 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1793 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1723 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
1760 1761 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1760 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
1763 1764 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1763 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
1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1664 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
1655 1656 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1655 def reorg_table(table_name) end |
#select(sql, name, stmt, results) ⇒ Object
1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1680 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 => 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 end |
#select_rows(sql, name, stmt, results) ⇒ Object
1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1701 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 end |
#set_binary_default(value) ⇒ Object
1781 1782 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1781 def set_binary_default(value) end |
#set_binary_value ⇒ Object
1784 1785 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1784 def set_binary_value end |
#set_case(value) ⇒ Object
1790 1791 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1790 def set_case(value) end |
#set_schema(schema) ⇒ Object
1756 1757 1758 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1756 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
1787 1788 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1787 def set_text_default end |
#setup_for_lob_table ⇒ Object
1652 1653 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 1652 def setup_for_lob_table () end |