ibm_db 2.5.0-mswin32 → 2.5.5-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +5 -0
- data/README +1 -1
- data/ext/ibm_db.c +62 -36
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +64 -20
- data/lib/mswin32/ibm_db.so +0 -0
- metadata +2 -2
    
        data/CHANGES
    CHANGED
    
    | @@ -1,5 +1,10 @@ | |
| 1 1 | 
             
            Change Log
         | 
| 2 2 | 
             
            ==============
         | 
| 3 | 
            +
            2010/07/15 (IBM_DB adapter 2.5.5, driver 2.5.5) :
         | 
| 4 | 
            +
              - Support for datatype Graphic and Vargraphic in driver and adapter [27965]
         | 
| 5 | 
            +
              - Support for Bigint datatype in adapter.
         | 
| 6 | 
            +
              - Fixed bug [28295] --> IBM_DB, Unicode Version, fails with encoding error against Informix Server
         | 
| 7 | 
            +
             | 
| 3 8 | 
             
            2010/05/12 (IBM_DB adapter 2.5.0, driver 2.5.0) :
         | 
| 4 9 | 
             
              - Support for Unicode with Ruby 1.9 [Data from the IBM_DB driver is returned in UTF8 format]
         | 
| 5 10 | 
             
              - Fixed bug [27954] --> Fixed Truncation of char for bit data containing a Null Terminator
         | 
    
        data/README
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            =====================================================================
         | 
| 2 | 
            -
            README for the IBM_DB Adapter (2.5. | 
| 2 | 
            +
            README for the IBM_DB Adapter (2.5.5) and Driver (2.5.5) (2010/07/15)
         | 
| 3 3 | 
             
            For ActiveRecord Version >= 1.15.5 (and Rails >= 1.2.5)
         | 
| 4 4 | 
             
            =====================================================================
         | 
| 5 5 |  | 
    
        data/ext/ibm_db.c
    CHANGED
    
    | @@ -12,7 +12,7 @@ | |
| 12 12 | 
             
              +----------------------------------------------------------------------+
         | 
| 13 13 | 
             
            */
         | 
| 14 14 |  | 
| 15 | 
            -
            #define MODULE_RELEASE "2.5. | 
| 15 | 
            +
            #define MODULE_RELEASE "2.5.5"
         | 
| 16 16 |  | 
| 17 17 | 
             
            #ifdef HAVE_CONFIG_H
         | 
| 18 18 | 
             
            #include "config.h"
         | 
| @@ -515,6 +515,8 @@ static void _ruby_ibm_db_free_result_struct(stmt_handle* handle) | |
| 515 515 | 
             
                      case SQL_WCHAR:
         | 
| 516 516 | 
             
                      case SQL_VARCHAR:
         | 
| 517 517 | 
             
                      case SQL_WVARCHAR:
         | 
| 518 | 
            +
                      case SQL_GRAPHIC:
         | 
| 519 | 
            +
                      case SQL_VARGRAPHIC:
         | 
| 518 520 | 
             
            #ifndef PASE /* i5/OS SQL_LONGVARCHAR is SQL_VARCHAR */
         | 
| 519 521 | 
             
                      case SQL_LONGVARCHAR:
         | 
| 520 522 | 
             
                      case SQL_WLONGVARCHAR:
         | 
| @@ -1629,16 +1631,19 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1629 1631 | 
             
                column_type =  stmt_res->column_info[i].type;
         | 
| 1630 1632 | 
             
                row_data    =  &stmt_res->row_data[i].data;
         | 
| 1631 1633 |  | 
| 1634 | 
            +
                bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1635 | 
            +
             | 
| 1632 1636 | 
             
                switch(column_type) {
         | 
| 1633 1637 | 
             
                  case SQL_CHAR:
         | 
| 1634 1638 | 
             
                  case SQL_WCHAR:
         | 
| 1635 1639 | 
             
                  case SQL_VARCHAR:
         | 
| 1636 1640 | 
             
                  case SQL_WVARCHAR:
         | 
| 1641 | 
            +
                  case SQL_GRAPHIC:
         | 
| 1642 | 
            +
                  case SQL_VARGRAPHIC:
         | 
| 1637 1643 | 
             
            #ifndef PASE /* i5/OS EBCIDIC<->ASCII related - we do getdata call instead */
         | 
| 1638 1644 | 
             
                  case SQL_LONGVARCHAR:
         | 
| 1639 1645 | 
             
                  case SQL_WLONGVARCHAR:
         | 
| 1640 1646 |  | 
| 1641 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1642 1647 | 
             
            #ifdef UNICODE_SUPPORT_VERSION
         | 
| 1643 1648 | 
             
                    bindCol_args->TargetType      =  SQL_C_WCHAR;
         | 
| 1644 1649 | 
             
                    bindCol_args->buff_length     =  (stmt_res->column_info[i].size+1) * sizeof(SQLWCHAR);
         | 
| @@ -1647,6 +1652,13 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1647 1652 | 
             
            #else
         | 
| 1648 1653 | 
             
                    bindCol_args->TargetType      =  SQL_C_CHAR;
         | 
| 1649 1654 | 
             
                    bindCol_args->buff_length     =  stmt_res->column_info[i].size+1;
         | 
| 1655 | 
            +
                    if( column_type == SQL_GRAPHIC || column_type == SQL_VARGRAPHIC ){
         | 
| 1656 | 
            +
                      /* Graphic string is 2 byte character string.
         | 
| 1657 | 
            +
                       * Size multiply by 2 is required only for non-unicode support version because the W equivalent functions return 
         | 
| 1658 | 
            +
                       * SQLType as wchar or wvarchar, respectively. Hence is handled properly.        
         | 
| 1659 | 
            +
                       */
         | 
| 1660 | 
            +
                      bindCol_args->buff_length     =  bindCol_args->buff_length * 2;
         | 
| 1661 | 
            +
                    }
         | 
| 1650 1662 | 
             
                    row_data->str_val             =  ALLOC_N(char, bindCol_args->buff_length);
         | 
| 1651 1663 | 
             
            #endif
         | 
| 1652 1664 | 
             
                    bindCol_args->TargetValuePtr  =  row_data->str_val;
         | 
| @@ -1668,7 +1680,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1668 1680 | 
             
                  case SQL_LONGVARBINARY:
         | 
| 1669 1681 | 
             
            #endif /* PASE */
         | 
| 1670 1682 | 
             
                  case SQL_VARBINARY:
         | 
| 1671 | 
            -
                    bindCol_args->col_num           =  (SQLUSMALLINT) i+1;
         | 
| 1672 1683 | 
             
                    bindCol_args->out_length        =  (SQLLEN *) (&stmt_res->row_data[i].out_length);
         | 
| 1673 1684 |  | 
| 1674 1685 | 
             
                    if ( stmt_res->s_bin_mode == CONVERT ) {
         | 
| @@ -1703,7 +1714,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1703 1714 | 
             
                  case SQL_TYPE_TIMESTAMP:
         | 
| 1704 1715 | 
             
                  case SQL_BIGINT:
         | 
| 1705 1716 | 
             
                  case SQL_DECFLOAT:
         | 
| 1706 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1707 1717 | 
             
                    bindCol_args->TargetType      =  SQL_C_CHAR;
         | 
| 1708 1718 | 
             
                    bindCol_args->buff_length     =  stmt_res->column_info[i].size+1;
         | 
| 1709 1719 | 
             
                    row_data->str_val             =  ALLOC_N(char, bindCol_args->buff_length);
         | 
| @@ -1719,7 +1729,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1719 1729 | 
             
                    break;
         | 
| 1720 1730 |  | 
| 1721 1731 | 
             
                  case SQL_SMALLINT:
         | 
| 1722 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1723 1732 | 
             
                    bindCol_args->TargetType      =  SQL_C_DEFAULT;
         | 
| 1724 1733 | 
             
                    bindCol_args->buff_length     =  sizeof(row_data->s_val);
         | 
| 1725 1734 | 
             
                    bindCol_args->TargetValuePtr  =  &row_data->s_val;
         | 
| @@ -1734,7 +1743,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1734 1743 | 
             
                    break;
         | 
| 1735 1744 |  | 
| 1736 1745 | 
             
                  case SQL_INTEGER:
         | 
| 1737 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1738 1746 | 
             
                    bindCol_args->TargetType      =  SQL_C_DEFAULT;
         | 
| 1739 1747 | 
             
                    bindCol_args->buff_length     =  sizeof(row_data->i_val);
         | 
| 1740 1748 | 
             
                    bindCol_args->TargetValuePtr  =  &row_data->i_val;
         | 
| @@ -1750,7 +1758,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1750 1758 |  | 
| 1751 1759 | 
             
                  case SQL_REAL:
         | 
| 1752 1760 | 
             
                  case SQL_FLOAT:
         | 
| 1753 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1754 1761 | 
             
                    bindCol_args->TargetType      =  SQL_C_DEFAULT;
         | 
| 1755 1762 | 
             
                    bindCol_args->buff_length     =  sizeof(row_data->f_val);
         | 
| 1756 1763 | 
             
                    bindCol_args->TargetValuePtr  =  &row_data->f_val;
         | 
| @@ -1765,7 +1772,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1765 1772 | 
             
                    break;
         | 
| 1766 1773 |  | 
| 1767 1774 | 
             
                  case SQL_DOUBLE:
         | 
| 1768 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1769 1775 | 
             
                    bindCol_args->TargetType      =  SQL_C_DEFAULT;
         | 
| 1770 1776 | 
             
                    bindCol_args->buff_length     =  sizeof(row_data->d_val);
         | 
| 1771 1777 | 
             
                    bindCol_args->TargetValuePtr  =  &row_data->d_val;
         | 
| @@ -1781,7 +1787,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1781 1787 |  | 
| 1782 1788 | 
             
                  case SQL_DECIMAL:
         | 
| 1783 1789 | 
             
                  case SQL_NUMERIC:
         | 
| 1784 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1785 1790 | 
             
                    bindCol_args->TargetType      =  SQL_C_CHAR;
         | 
| 1786 1791 | 
             
                    bindCol_args->buff_length     =  stmt_res->column_info[i].size +
         | 
| 1787 1792 | 
             
                                                       stmt_res->column_info[i].scale + 2 + 1;
         | 
| @@ -1801,7 +1806,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1801 1806 | 
             
                    stmt_res->row_data[i].out_length  =  0;
         | 
| 1802 1807 | 
             
                    stmt_res->column_info[i].loc_type =  SQL_CLOB_LOCATOR;
         | 
| 1803 1808 |  | 
| 1804 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1805 1809 | 
             
                    bindCol_args->TargetType      =  stmt_res->column_info[i].loc_type;
         | 
| 1806 1810 | 
             
                    bindCol_args->buff_length     =  4;
         | 
| 1807 1811 | 
             
                    bindCol_args->TargetValuePtr  =  &stmt_res->column_info[i].lob_loc;
         | 
| @@ -1818,7 +1822,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res) | |
| 1818 1822 | 
             
                    stmt_res->row_data[i].out_length  =  0;
         | 
| 1819 1823 | 
             
                    stmt_res->column_info[i].loc_type =  SQL_BLOB_LOCATOR;
         | 
| 1820 1824 |  | 
| 1821 | 
            -
                    bindCol_args->col_num         =  (SQLUSMALLINT) i+1;
         | 
| 1822 1825 | 
             
                    bindCol_args->TargetType      =  stmt_res->column_info[i].loc_type;
         | 
| 1823 1826 | 
             
                    bindCol_args->buff_length     =  4;
         | 
| 1824 1827 | 
             
                    bindCol_args->TargetValuePtr  =  &stmt_res->column_info[i].lob_loc;
         | 
| @@ -5638,13 +5641,20 @@ static int _ruby_ibm_db_bind_parameter_helper(stmt_handle *stmt_res, param_node | |
| 5638 5641 | 
             
                          curr->ivalue = curr->param_size;
         | 
| 5639 5642 | 
             
                        }
         | 
| 5640 5643 | 
             
                      } else {
         | 
| 5641 | 
            -
                        if (curr->ivalue < ( curr->param_size * sizeof(SQLWCHAR) ) ) {
         | 
| 5642 | 
            -
                          curr->ivalue = curr->param_size * sizeof(SQLWCHAR);
         | 
| 5644 | 
            +
                        if (curr->ivalue < ( (curr->param_size + 1) * sizeof(SQLWCHAR) ) ) {
         | 
| 5645 | 
            +
                          curr->ivalue = (curr->param_size + 1)* sizeof(SQLWCHAR);
         | 
| 5643 5646 | 
             
                        }
         | 
| 5644 5647 | 
             
                      }
         | 
| 5645 5648 | 
             
            #else
         | 
| 5646 5649 | 
             
                      if (curr->ivalue < curr->param_size ) {
         | 
| 5647 | 
            -
                        curr->ivalue = curr->param_size;
         | 
| 5650 | 
            +
                        curr->ivalue = curr->param_size + 1;
         | 
| 5651 | 
            +
                      }
         | 
| 5652 | 
            +
             | 
| 5653 | 
            +
                      if ( curr->data_type == SQL_GRAPHIC || curr->data_type == SQL_VARGRAPHIC ){
         | 
| 5654 | 
            +
                       /* graphic strings are 2 byte characters.
         | 
| 5655 | 
            +
                        * Not required for unicode support, as datatype is w equivalent of char.
         | 
| 5656 | 
            +
                       */
         | 
| 5657 | 
            +
                       curr->ivalue = curr->ivalue * 2; 
         | 
| 5648 5658 | 
             
                      }
         | 
| 5649 5659 | 
             
            #endif
         | 
| 5650 5660 | 
             
                    } else {
         | 
| @@ -5663,6 +5673,12 @@ static int _ruby_ibm_db_bind_parameter_helper(stmt_handle *stmt_res, param_node | |
| 5663 5673 | 
             
                        if( curr->size > curr->ivalue ) {
         | 
| 5664 5674 | 
             
                          curr->ivalue = curr->size + 1;
         | 
| 5665 5675 | 
             
                        }
         | 
| 5676 | 
            +
                        if ( curr->data_type == SQL_GRAPHIC || curr->data_type == SQL_VARGRAPHIC ){
         | 
| 5677 | 
            +
                         /* graphic strings are 2 byte characters.
         | 
| 5678 | 
            +
                          * Not required for unicode support, as datatype is w equivalent of char.
         | 
| 5679 | 
            +
                          */
         | 
| 5680 | 
            +
                         curr->ivalue = curr->ivalue * 2;
         | 
| 5681 | 
            +
                        }
         | 
| 5666 5682 | 
             
            #endif
         | 
| 5667 5683 | 
             
                      } else {
         | 
| 5668 5684 | 
             
            #ifdef UNICODE_SUPPORT_VERSION
         | 
| @@ -5673,6 +5689,12 @@ static int _ruby_ibm_db_bind_parameter_helper(stmt_handle *stmt_res, param_node | |
| 5673 5689 | 
             
                          }
         | 
| 5674 5690 | 
             
            #else
         | 
| 5675 5691 | 
             
                          curr->ivalue = curr->size + 1;
         | 
| 5692 | 
            +
                          if ( curr->data_type == SQL_GRAPHIC || curr->data_type == SQL_VARGRAPHIC ){
         | 
| 5693 | 
            +
                           /* graphic strings are 2 byte characters.
         | 
| 5694 | 
            +
                            * Not required for unicode support, as datatype is w equivalent of char.
         | 
| 5695 | 
            +
                            */
         | 
| 5696 | 
            +
                           curr->ivalue = curr->ivalue * 2;
         | 
| 5697 | 
            +
                          }
         | 
| 5676 5698 | 
             
            #endif
         | 
| 5677 5699 | 
             
                      }
         | 
| 5678 5700 | 
             
                    }
         | 
| @@ -5699,11 +5721,7 @@ static int _ruby_ibm_db_bind_parameter_helper(stmt_handle *stmt_res, param_node | |
| 5699 5721 | 
             
                        paramValuePtr                    =  (SQLPOINTER)curr->svalue;
         | 
| 5700 5722 | 
             
                      } else if (curr->param_type == SQL_PARAM_INPUT_OUTPUT) {
         | 
| 5701 5723 | 
             
                        curr->bind_indicator             =  origlen;
         | 
| 5702 | 
            -
            #ifdef UNICODE_SUPPORT_VERSION
         | 
| 5703 | 
            -
                        bindParameter_args->buff_length  =  curr->ivalue/sizeof(SQLWCHAR);
         | 
| 5704 | 
            -
            #else
         | 
| 5705 5724 | 
             
                        bindParameter_args->buff_length  =  curr->ivalue;
         | 
| 5706 | 
            -
            #endif
         | 
| 5707 5725 | 
             
                        paramValuePtr                    =  (SQLPOINTER)curr->svalue;
         | 
| 5708 5726 | 
             
                      } else {
         | 
| 5709 5727 | 
             
                        curr->bind_indicator = SQL_DATA_AT_EXEC;
         | 
| @@ -5752,20 +5770,17 @@ static int _ruby_ibm_db_bind_parameter_helper(stmt_handle *stmt_res, param_node | |
| 5752 5770 |  | 
| 5753 5771 | 
             
                    /* This option should handle most other types such as DATE, VARCHAR etc */
         | 
| 5754 5772 | 
             
                    default:
         | 
| 5755 | 
            -
                      if ( curr->param_type ==  | 
| 5756 | 
            -
                        curr->bind_indicator             =  curr->ivalue;
         | 
| 5757 | 
            -
                        bindParameter_args->buff_length  =  curr->ivalue;
         | 
| 5758 | 
            -
                      } else if (curr->param_type == SQL_PARAM_INPUT_OUTPUT) {
         | 
| 5773 | 
            +
                      if ( curr->param_type == SQL_PARAM_INPUT_OUTPUT ) {
         | 
| 5759 5774 | 
             
                        curr->bind_indicator             =  origlen;
         | 
| 5760 | 
            -
            #ifdef UNICODE_SUPPORT_VERSION
         | 
| 5761 | 
            -
                        bindParameter_args->buff_length  =  curr->ivalue/sizeof(SQLWCHAR);
         | 
| 5762 | 
            -
            #else
         | 
| 5763 | 
            -
                        bindParameter_args->buff_length  =  curr->ivalue;
         | 
| 5764 | 
            -
            #endif
         | 
| 5765 5775 | 
             
                      } else {
         | 
| 5766 | 
            -
                        curr-> | 
| 5767 | 
            -
             | 
| 5776 | 
            +
                        if( curr->param_type == SQL_PARAM_INPUT && 
         | 
| 5777 | 
            +
                            (curr->data_type == SQL_GRAPHIC || curr->data_type == SQL_VARGRAPHIC)){
         | 
| 5778 | 
            +
                          curr->bind_indicator             =  origlen;
         | 
| 5779 | 
            +
                        } else {
         | 
| 5780 | 
            +
                          curr->bind_indicator             =  curr->ivalue;
         | 
| 5781 | 
            +
                        }
         | 
| 5768 5782 | 
             
                      }
         | 
| 5783 | 
            +
                      bindParameter_args->buff_length  =  curr->ivalue;
         | 
| 5769 5784 | 
             
            #ifdef UNICODE_SUPPORT_VERSION
         | 
| 5770 5785 | 
             
                      valueType = SQL_C_WCHAR;
         | 
| 5771 5786 | 
             
            #else
         | 
| @@ -8266,6 +8281,8 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) { | |
| 8266 8281 | 
             
                case SQL_WCHAR:
         | 
| 8267 8282 | 
             
                case SQL_VARCHAR:
         | 
| 8268 8283 | 
             
                case SQL_WVARCHAR:
         | 
| 8284 | 
            +
                case SQL_GRAPHIC:
         | 
| 8285 | 
            +
                case SQL_VARGRAPHIC:
         | 
| 8269 8286 | 
             
            #ifndef PASE /* i5/OS SQL_LONGVARCHAR is SQL_VARCHAR */
         | 
| 8270 8287 | 
             
                case SQL_LONGVARCHAR:
         | 
| 8271 8288 | 
             
                case SQL_WLONGVARCHAR:
         | 
| @@ -8275,6 +8292,13 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) { | |
| 8275 8292 | 
             
                  out_ptr = (SQLPOINTER)ALLOC_N(SQLWCHAR,in_length);
         | 
| 8276 8293 | 
             
                  memset(out_ptr, '\0', in_length * sizeof(SQLWCHAR) );
         | 
| 8277 8294 | 
             
            #else
         | 
| 8295 | 
            +
                  if( column_type == SQL_GRAPHIC || column_type == SQL_VARGRAPHIC ) {
         | 
| 8296 | 
            +
                      /* Graphic string is 2 byte character string.
         | 
| 8297 | 
            +
                       * Size multiply by 2 is required only for non-unicode support version because the W equivalent functions return
         | 
| 8298 | 
            +
                       * SQLType as wchar or wvarchar, respectively. Hence is handled properly.
         | 
| 8299 | 
            +
                      */
         | 
| 8300 | 
            +
                    in_length = in_length * 2;
         | 
| 8301 | 
            +
                  }
         | 
| 8278 8302 | 
             
                  out_ptr = (SQLPOINTER)ALLOC_N(char,in_length);
         | 
| 8279 8303 | 
             
                  memset(out_ptr, '\0', in_length);
         | 
| 8280 8304 | 
             
            #endif
         | 
| @@ -8797,6 +8821,8 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data) | |
| 8797 8821 | 
             
                    case SQL_WCHAR:
         | 
| 8798 8822 | 
             
                    case SQL_VARCHAR:
         | 
| 8799 8823 | 
             
                    case SQL_WVARCHAR:
         | 
| 8824 | 
            +
                    case SQL_GRAPHIC:
         | 
| 8825 | 
            +
                    case SQL_VARGRAPHIC:
         | 
| 8800 8826 | 
             
            #ifndef PASE /* i5/OS SQL_LONGVARCHAR is SQL_VARCHAR */
         | 
| 8801 8827 | 
             
                    case SQL_LONGVARCHAR:
         | 
| 8802 8828 | 
             
                    case SQL_WLONGVARCHAR:
         | 
| @@ -9750,11 +9776,11 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) { | |
| 9750 9776 | 
             
            #ifndef UNICODE_SUPPORT_VERSION
         | 
| 9751 9777 | 
             
              char buffer11[11];
         | 
| 9752 9778 | 
             
              char buffer255[255];
         | 
| 9753 | 
            -
              char  | 
| 9779 | 
            +
              char buffer3k[3072]; /*Informix server returns SQL_KEYWORDS data, which requires 2608*/
         | 
| 9754 9780 | 
             
            #else
         | 
| 9755 9781 | 
             
              SQLWCHAR buffer11[11];
         | 
| 9756 9782 | 
             
              SQLWCHAR buffer255[255];
         | 
| 9757 | 
            -
              SQLWCHAR  | 
| 9783 | 
            +
              SQLWCHAR buffer3k[3072]; /*Informix server returns SQL_KEYWORDS data, which requires 2608*/
         | 
| 9758 9784 | 
             
            #endif
         | 
| 9759 9785 |  | 
| 9760 9786 | 
             
              SQLSMALLINT bufferint16;
         | 
| @@ -9889,11 +9915,11 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) { | |
| 9889 9915 |  | 
| 9890 9916 | 
             
              /* KEYWORDS */
         | 
| 9891 9917 | 
             
              getInfo_args->infoType     =  SQL_KEYWORDS;
         | 
| 9892 | 
            -
              getInfo_args->infoValue    =  (SQLPOINTER) | 
| 9893 | 
            -
              getInfo_args->buff_length  =  sizeof(  | 
| 9918 | 
            +
              getInfo_args->infoValue    =  (SQLPOINTER)buffer3k;
         | 
| 9919 | 
            +
              getInfo_args->buff_length  =  sizeof( buffer3k );
         | 
| 9894 9920 | 
             
              out_length                 =  0;
         | 
| 9895 9921 |  | 
| 9896 | 
            -
              memset( | 
| 9922 | 
            +
              memset(buffer3k, '\0', sizeof(buffer3k));
         | 
| 9897 9923 | 
             
              rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
         | 
| 9898 9924 |  | 
| 9899 9925 | 
             
              if ( rc == SQL_ERROR ) {
         | 
| @@ -9903,10 +9929,10 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) { | |
| 9903 9929 | 
             
                VALUE keywordsStr, keywordsArray;
         | 
| 9904 9930 |  | 
| 9905 9931 | 
             
            #ifdef UNICODE_SUPPORT_VERSION
         | 
| 9906 | 
            -
                keywordsStr   =  _ruby_ibm_db_export_sqlwchar_to_utf8_rstr( | 
| 9932 | 
            +
                keywordsStr   =  _ruby_ibm_db_export_sqlwchar_to_utf8_rstr(buffer3k, out_length);
         | 
| 9907 9933 | 
             
                keywordsArray =  rb_str_split(keywordsStr, RSTRING_PTR(_ruby_ibm_db_export_char_to_utf8_rstr(",")) );
         | 
| 9908 9934 | 
             
            #else
         | 
| 9909 | 
            -
                keywordsStr   = rb_str_new2(  | 
| 9935 | 
            +
                keywordsStr   = rb_str_new2( buffer3k );
         | 
| 9910 9936 | 
             
                keywordsArray = rb_str_split(keywordsStr, ",");
         | 
| 9911 9937 | 
             
            #endif
         | 
| 9912 9938 |  | 
| @@ -232,6 +232,8 @@ module ActiveRecord | |
| 232 232 | 
             
                        :binary
         | 
| 233 233 | 
             
                      when /smallint/i
         | 
| 234 234 | 
             
                        :boolean
         | 
| 235 | 
            +
                      when /bigint/i
         | 
| 236 | 
            +
                        :bigint
         | 
| 235 237 | 
             
                      when /int|serial/i
         | 
| 236 238 | 
             
                        :integer
         | 
| 237 239 | 
             
                      when /decimal|numeric|decfloat/i
         | 
| @@ -244,7 +246,11 @@ module ActiveRecord | |
| 244 246 | 
             
                        :time
         | 
| 245 247 | 
             
                      when /date/i
         | 
| 246 248 | 
             
                        :date
         | 
| 247 | 
            -
                      when / | 
| 249 | 
            +
                      when /vargraphic/i
         | 
| 250 | 
            +
                        :vargraphic
         | 
| 251 | 
            +
                      when /graphic/i
         | 
| 252 | 
            +
                        :graphic
         | 
| 253 | 
            +
                      when /clob|text/i
         | 
| 248 254 | 
             
                        :text
         | 
| 249 255 | 
             
                      when /xml/i
         | 
| 250 256 | 
             
                        :xml
         | 
| @@ -283,9 +289,9 @@ module ActiveRecord | |
| 283 289 | 
             
                    if args.last.is_a?(Hash) 
         | 
| 284 290 | 
             
                      options = args.delete_at(args.length-1)
         | 
| 285 291 | 
             
                    end
         | 
| 286 | 
            -
                     | 
| 292 | 
            +
                    sql_segment = "ALTER TABLE #{@base.quote_table_name(@table_name)} ADD COLUMN "
         | 
| 287 293 | 
             
                    args.each do | name | 
         | 
| 288 | 
            -
                      sql  | 
| 294 | 
            +
                      sql =  sql_segment + " #{@base.quote_column_name(name)} xml"
         | 
| 289 295 | 
             
                      @base.execute(sql,"add_xml_column")
         | 
| 290 296 | 
             
                    end  
         | 
| 291 297 | 
             
                    return self
         | 
| @@ -303,6 +309,21 @@ module ActiveRecord | |
| 303 309 | 
             
                    return self
         | 
| 304 310 | 
             
                  end
         | 
| 305 311 |  | 
| 312 | 
            +
                  def graphic(*args)
         | 
| 313 | 
            +
                    ibm_parse_column_attributes_args('graphic',*args)
         | 
| 314 | 
            +
                    return self
         | 
| 315 | 
            +
                  end
         | 
| 316 | 
            +
             | 
| 317 | 
            +
                  def vargraphic(*args)
         | 
| 318 | 
            +
                    ibm_parse_column_attributes_args('vargraphic',*args)
         | 
| 319 | 
            +
                    return self
         | 
| 320 | 
            +
                  end
         | 
| 321 | 
            +
             | 
| 322 | 
            +
                  def bigint(*args)
         | 
| 323 | 
            +
                    ibm_parse_column_attributes_args('bigint',*args)
         | 
| 324 | 
            +
                    return self
         | 
| 325 | 
            +
                  end
         | 
| 326 | 
            +
             | 
| 306 327 | 
             
                  #Method to support the new syntax of rails 2.0 migrations (short-hand definitions) for columns of type char [character]
         | 
| 307 328 | 
             
                  def char(*args)
         | 
| 308 329 | 
             
                    ibm_parse_column_attributes_args('char',*args)
         | 
| @@ -343,6 +364,21 @@ module ActiveRecord | |
| 343 364 | 
             
                    return self
         | 
| 344 365 | 
             
                  end
         | 
| 345 366 |  | 
| 367 | 
            +
                  def graphic(*args)
         | 
| 368 | 
            +
                    ibm_parse_column_attributes_args('graphic',*args)
         | 
| 369 | 
            +
                    return self
         | 
| 370 | 
            +
                  end
         | 
| 371 | 
            +
             | 
| 372 | 
            +
                  def vargraphic(*args)
         | 
| 373 | 
            +
                    ibm_parse_column_attributes_args('vargraphic',*args)
         | 
| 374 | 
            +
                    return self
         | 
| 375 | 
            +
                  end
         | 
| 376 | 
            +
             | 
| 377 | 
            +
                  def bigint(*args)
         | 
| 378 | 
            +
                    ibm_parse_column_attributes_args('bigint',*args)
         | 
| 379 | 
            +
                    return self
         | 
| 380 | 
            +
                  end
         | 
| 381 | 
            +
             | 
| 346 382 | 
             
                  #Method to support the new syntax of rails 2.0 migrations (short-hand definitions) for columns of type char [character]
         | 
| 347 383 | 
             
                  def char(*args)
         | 
| 348 384 | 
             
                    ibm_parse_column_attributes_args('char',*args)
         | 
| @@ -456,6 +492,7 @@ module ActiveRecord | |
| 456 492 | 
             
                      @set_quoted_literal_replacement = IBM_DB::QUOTED_LITERAL_REPLACEMENT_ON
         | 
| 457 493 | 
             
                    end
         | 
| 458 494 |  | 
| 495 | 
            +
                    @app_user = @account = @application = @workstation = nil
         | 
| 459 496 | 
             
                    # Caching database connection options (auditing and billing support)
         | 
| 460 497 | 
             
                    @app_user         = conn_options[:app_user]     if conn_options.has_key?(:app_user)
         | 
| 461 498 | 
             
                    @account          = conn_options[:account]      if conn_options.has_key?(:account)
         | 
| @@ -1236,12 +1273,15 @@ module ActiveRecord | |
| 1236 1273 | 
             
                      :serial      => { :name => "serial" }, # rowid is a supported datatype on Informix Dynamic Server
         | 
| 1237 1274 | 
             
                      :char        => { :name => "char" },
         | 
| 1238 1275 | 
             
                      :double      => { :name => @servertype.get_double_mapping },
         | 
| 1239 | 
            -
                      :decfloat    => { :name => "decfloat"}
         | 
| 1276 | 
            +
                      :decfloat    => { :name => "decfloat"},
         | 
| 1277 | 
            +
                      :graphic     => { :name => "graphic", :limit => 1},
         | 
| 1278 | 
            +
                      :vargraphic  => { :name => "vargraphic", :limit => 1},
         | 
| 1279 | 
            +
                      :bigint      => { :name => "bigint"}
         | 
| 1240 1280 | 
             
                    }
         | 
| 1241 1281 | 
             
                  end
         | 
| 1242 1282 |  | 
| 1243 1283 | 
             
                  # IBM data servers do not support limits on certain data types (unlike MySQL)
         | 
| 1244 | 
            -
                  # Limit is supported for the {float, decimal, numeric, varchar, clob, blob} data types.
         | 
| 1284 | 
            +
                  # Limit is supported for the {float, decimal, numeric, varchar, clob, blob, graphic, vargraphic} data types.
         | 
| 1245 1285 | 
             
                  def type_to_sql(type, limit = nil, precision = nil, scale = nil)
         | 
| 1246 1286 | 
             
                    if type.to_sym == :decfloat
         | 
| 1247 1287 | 
             
                      sql_segment = native_database_types[type.to_sym][:name].to_s
         | 
| @@ -1502,7 +1542,7 @@ module ActiveRecord | |
| 1502 1542 | 
             
                                 !column_type =~ /char|lob|graphic/i
         | 
| 1503 1543 | 
             
                            if column_type =~ /decimal/i
         | 
| 1504 1544 | 
             
                              column_type << "(#{column_length},#{column_scale})"
         | 
| 1505 | 
            -
                            elsif column_type =~ /smallint|integer|double|date|time|timestamp|xml/i
         | 
| 1545 | 
            +
                            elsif column_type =~ /smallint|integer|double|date|time|timestamp|xml|bigint/i
         | 
| 1506 1546 | 
             
                              column_type << ""  # override native limits incompatible with table create
         | 
| 1507 1547 | 
             
                            else
         | 
| 1508 1548 | 
             
                              column_type << "(#{column_length})"
         | 
| @@ -1791,11 +1831,16 @@ To remove the column, the table must be dropped and recreated without the #{colu | |
| 1791 1831 | 
             
                  end
         | 
| 1792 1832 |  | 
| 1793 1833 | 
             
                  def limit_not_supported_types
         | 
| 1794 | 
            -
                    [:integer, :double, :date, :time, :timestamp, :xml]
         | 
| 1834 | 
            +
                    [:integer, :double, :date, :time, :timestamp, :xml, :bigint]
         | 
| 1795 1835 | 
             
                  end
         | 
| 1796 1836 | 
             
                end # class IBM_DataServer
         | 
| 1797 1837 |  | 
| 1798 1838 | 
             
                class IBM_DB2 < IBM_DataServer
         | 
| 1839 | 
            +
                  def initialize(adapter)
         | 
| 1840 | 
            +
                    super(adapter)
         | 
| 1841 | 
            +
                    @limit = @offset = nil
         | 
| 1842 | 
            +
                  end
         | 
| 1843 | 
            +
             | 
| 1799 1844 | 
             
                  def rename_column(table_name, column_name, new_column_name)
         | 
| 1800 1845 | 
             
                    raise NotImplementedError, "rename_column is not implemented yet in the IBM_DB Adapter"
         | 
| 1801 1846 | 
             
                  end
         | 
| @@ -1872,12 +1917,9 @@ The column datatype change to [#{data_type}] is not supported by this data serve | |
| 1872 1917 | 
             
                  # DB2 specific ALTER TABLE statement to add a default clause
         | 
| 1873 1918 | 
             
                  def change_column_default(table_name, column_name, default)
         | 
| 1874 1919 | 
             
                    # SQL statement which alters column's default value
         | 
| 1875 | 
            -
                     | 
| 1876 | 
            -
                      change_column_sql = "ALTER TABLE #{table_name} ALTER #{column_name} DROP DEFAULT"   
         | 
| 1877 | 
            -
                    else
         | 
| 1878 | 
            -
                      change_column_sql = "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} \
         | 
| 1920 | 
            +
                    change_column_sql = "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} \
         | 
| 1879 1921 | 
             
            SET WITH DEFAULT #{@adapter.quote(default)}"
         | 
| 1880 | 
            -
             | 
| 1922 | 
            +
             | 
| 1881 1923 | 
             
                    stmt = execute(change_column_sql)
         | 
| 1882 1924 | 
             
                    reorg_table(table_name)
         | 
| 1883 1925 | 
             
                    ensure
         | 
| @@ -1889,16 +1931,17 @@ SET WITH DEFAULT #{@adapter.quote(default)}" | |
| 1889 1931 | 
             
                    if !default.nil?
         | 
| 1890 1932 | 
             
                      change_column_default(table_name, column_name, default)
         | 
| 1891 1933 | 
             
                    end 
         | 
| 1892 | 
            -
             | 
| 1934 | 
            +
             | 
| 1893 1935 | 
             
                    if !null.nil? 
         | 
| 1894 1936 | 
             
                      if null
         | 
| 1895 1937 | 
             
                        change_column_sql = "ALTER TABLE #{table_name} ALTER #{column_name} DROP NOT NULL"
         | 
| 1896 1938 | 
             
                      else
         | 
| 1897 1939 | 
             
                        change_column_sql = "ALTER TABLE #{table_name} ALTER #{column_name} SET NOT NULL"
         | 
| 1898 | 
            -
                      end | 
| 1940 | 
            +
                      end
         | 
| 1941 | 
            +
                      stmt = execute(change_column_sql)
         | 
| 1942 | 
            +
                      reorg_table(table_name)
         | 
| 1899 1943 | 
             
                    end
         | 
| 1900 | 
            -
             | 
| 1901 | 
            -
                    reorg_table(table_name)
         | 
| 1944 | 
            +
             | 
| 1902 1945 | 
             
                    ensure
         | 
| 1903 1946 | 
             
                      IBM_DB.free_stmt(stmt) if stmt   
         | 
| 1904 1947 | 
             
                  end
         | 
| @@ -2200,7 +2243,7 @@ SET WITH DEFAULT #{@adapter.quote(default)}" | |
| 2200 2243 | 
             
                  # Cobra supports parameterised timestamp, 
         | 
| 2201 2244 | 
             
                  # hence overriding following method to allow timestamp datatype to be parameterised
         | 
| 2202 2245 | 
             
                  def limit_not_supported_types
         | 
| 2203 | 
            -
                    [:integer, :double, :date, :time, :xml]
         | 
| 2246 | 
            +
                    [:integer, :double, :date, :time, :xml, :bigint]
         | 
| 2204 2247 | 
             
                  end
         | 
| 2205 2248 |  | 
| 2206 2249 | 
             
                  # Alter table column for renaming a column
         | 
| @@ -2445,10 +2488,11 @@ SET WITH DEFAULT #{@adapter.quote(default)}" | |
| 2445 2488 | 
             
                        change_column_sql = "ALTER TABLE #{table_name} MODIFY #{column_name} #{sql_type} NOT NULL"
         | 
| 2446 2489 | 
             
                      else
         | 
| 2447 2490 | 
             
                        change_column_sql = "ALTER TABLE #{table_name} MODIFY #{column_name} #{sql_type}"     
         | 
| 2448 | 
            -
                      end | 
| 2491 | 
            +
                      end
         | 
| 2492 | 
            +
                      stmt = execute(change_column_sql)
         | 
| 2493 | 
            +
                      reorg_table(table_name)
         | 
| 2449 2494 | 
             
                    end
         | 
| 2450 | 
            -
             | 
| 2451 | 
            -
                    reorg_table(table_name)
         | 
| 2495 | 
            +
             | 
| 2452 2496 | 
             
                    ensure
         | 
| 2453 2497 | 
             
                      IBM_DB.free_stmt(stmt) if stmt
         | 
| 2454 2498 | 
             
                  end
         | 
    
        data/lib/mswin32/ibm_db.so
    CHANGED
    
    | Binary file | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: ibm_db
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 2.5. | 
| 4 | 
            +
              version: 2.5.5
         | 
| 5 5 | 
             
            platform: mswin32
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - IBM
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2010- | 
| 12 | 
            +
            date: 2010-07-15 00:00:00 +05:30
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         |