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