ibm_db 2.5.7-x86-mswin32-60 → 2.5.9-x86-mswin32-60
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 +4 -0
 - data/README +1 -1
 - data/ext/extconf.rb +1 -1
 - data/ext/ibm_db.c +456 -39
 - data/ext/ruby_ibm_db.h +4 -1
 - data/ext/ruby_ibm_db_cli.c +108 -1
 - data/ext/ruby_ibm_db_cli.h +54 -1
 - data/lib/active_record/connection_adapters/ibm_db_adapter.rb +78 -11
 - data/lib/mswin32/rb18x/ibm_db.so +0 -0
 - data/lib/mswin32/rb19x/ibm_db.so +0 -0
 - metadata +3 -2
 
    
        data/CHANGES
    CHANGED
    
    | 
         @@ -1,5 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Change Log
         
     | 
| 
       2 
2 
     | 
    
         
             
            ==============
         
     | 
| 
      
 3 
     | 
    
         
            +
            2012/01/03 (IBM_DB adapter 2.5.9, driver 2.5.9) :
         
     | 
| 
      
 4 
     | 
    
         
            +
              - Support for Create and Drop database on DB2 LUW with DB2 client version V97fp4 and above
         
     | 
| 
      
 5 
     | 
    
         
            +
              - Fixed bug #29482 - Fixed bigint being returned as string in the adapter
         
     | 
| 
      
 6 
     | 
    
         
            +
              
         
     | 
| 
       3 
7 
     | 
    
         
             
            2011/09/18 (IBM_DB adapter 2.5.7, driver 2.5.7) :
         
     | 
| 
       4 
8 
     | 
    
         
             
              - Support for Rails-3.1.0
         
     | 
| 
       5 
9 
     | 
    
         
             
              - Fixed bug #29052 -> prepare results in empty error message
         
     | 
    
        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.9) and Driver (2.5.9) (2012/01/03)
         
     | 
| 
       3 
3 
     | 
    
         
             
            For ActiveRecord Version >= 1.15.5 (and Rails >= 1.2.5)
         
     | 
| 
       4 
4 
     | 
    
         
             
            =====================================================================
         
     | 
| 
       5 
5 
     | 
    
         | 
    
        data/ext/extconf.rb
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ 
     | 
|
| 
       7 
7 
     | 
    
         
             
            # +----------------------------------------------------------------------+
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            require 'mkmf'
         
     | 
| 
       10 
     | 
    
         
            -
            WIN = RUBY_PLATFORM =~ /mswin/
         
     | 
| 
      
 10 
     | 
    
         
            +
            WIN = RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            # use ENV['DB2DIR'] or latest db2 you can find
         
     | 
| 
       13 
13 
     | 
    
         
             
            # (we need to revisit default when db2 10.x comes out)
         
     | 
    
        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.9"
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            #ifdef HAVE_CONFIG_H
         
     | 
| 
       18 
18 
     | 
    
         
             
            #include "config.h"
         
     | 
| 
         @@ -42,6 +42,7 @@ static void _ruby_ibm_db_clear_stmt_err_cache(); 
     | 
|
| 
       42 
42 
     | 
    
         
             
            static int  _ruby_ibm_db_set_decfloat_rounding_mode_client(SQLHANDLE hdbc);
         
     | 
| 
       43 
43 
     | 
    
         
             
            static char *_ruby_ibm_db_instance_name;
         
     | 
| 
       44 
44 
     | 
    
         
             
            static int  is_systemi, is_informix;        /* 1 == TRUE; 0 == FALSE; */
         
     | 
| 
      
 45 
     | 
    
         
            +
            static int  createDbSupported, dropDbSupported; /*1 == TRUE; 0 == FALSE*/
         
     | 
| 
       45 
46 
     | 
    
         | 
| 
       46 
47 
     | 
    
         
             
            /* Strucure holding the necessary data to be passed to bind the list of elements passed to the execute function*/
         
     | 
| 
       47 
48 
     | 
    
         
             
            typedef struct _stmt_bind_data_array {
         
     | 
| 
         @@ -188,6 +189,9 @@ void Init_ibm_db(void) { 
     | 
|
| 
       188 
189 
     | 
    
         
             
              mDB = rb_define_module("IBM_DB");
         
     | 
| 
       189 
190 
     | 
    
         | 
| 
       190 
191 
     | 
    
         
             
              rb_define_module_function(mDB, "connect", ibm_db_connect, -1);
         
     | 
| 
      
 192 
     | 
    
         
            +
              rb_define_module_function(mDB, "createDB", ibm_db_createDB, -1);
         
     | 
| 
      
 193 
     | 
    
         
            +
              rb_define_module_function(mDB, "dropDB", ibm_db_dropDB, -1);
         
     | 
| 
      
 194 
     | 
    
         
            +
              rb_define_module_function(mDB, "createDBNX", ibm_db_createDBNX, -1);
         
     | 
| 
       191 
195 
     | 
    
         
             
              rb_define_module_function(mDB, "commit", ibm_db_commit, -1);
         
     | 
| 
       192 
196 
     | 
    
         
             
              rb_define_module_function(mDB, "pconnect", ibm_db_pconnect, -1);
         
     | 
| 
       193 
197 
     | 
    
         
             
              rb_define_module_function(mDB, "autocommit", ibm_db_autocommit, -1);
         
     | 
| 
         @@ -326,6 +330,54 @@ static void ruby_ibm_db_load_necessary_libs() { 
     | 
|
| 
       326 
330 
     | 
    
         
             
              rb_eval_string("require \'bigdecimal\'");
         
     | 
| 
       327 
331 
     | 
    
         
             
            }
         
     | 
| 
       328 
332 
     | 
    
         | 
| 
      
 333 
     | 
    
         
            +
            #ifdef _WIN32
         
     | 
| 
      
 334 
     | 
    
         
            +
            static void ruby_ibm_db_check_sqlcreatedb(HINSTANCE cliLib) {
         
     | 
| 
      
 335 
     | 
    
         
            +
               FARPROC sqlcreatedb;
         
     | 
| 
      
 336 
     | 
    
         
            +
               sqlcreatedb =  DLSYM( cliLib, "SQLCreateDbW" );
         
     | 
| 
      
 337 
     | 
    
         
            +
            #else
         
     | 
| 
      
 338 
     | 
    
         
            +
            static void ruby_ibm_db_check_sqlcreatedb(void *cliLib) {
         
     | 
| 
      
 339 
     | 
    
         
            +
               typedef int (*sqlcreatedbType)( SQLHDBC, SQLWCHAR *, SQLINTEGER, SQLWCHAR *, SQLINTEGER, SQLWCHAR *, SQLINTEGER );
         
     | 
| 
      
 340 
     | 
    
         
            +
               sqlcreatedbType sqlcreatedb;
         
     | 
| 
      
 341 
     | 
    
         
            +
               sqlcreatedb = (sqlcreatedbType) DLSYM( cliLib, "SQLCreateDbW" );
         
     | 
| 
      
 342 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 343 
     | 
    
         
            +
                 if ( sqlcreatedb == NULL )  {
         
     | 
| 
      
 344 
     | 
    
         
            +
                    createDbSupported = 0;
         
     | 
| 
      
 345 
     | 
    
         
            +
                    dropDbSupported   = 0;
         
     | 
| 
      
 346 
     | 
    
         
            +
            	 } else {
         
     | 
| 
      
 347 
     | 
    
         
            +
                    createDbSupported = 1;
         
     | 
| 
      
 348 
     | 
    
         
            +
                    dropDbSupported   = 1;
         
     | 
| 
      
 349 
     | 
    
         
            +
            	 }
         
     | 
| 
      
 350 
     | 
    
         
            +
            }
         
     | 
| 
      
 351 
     | 
    
         
            +
            /*Check if specific functions are supported or not based on CLI being used
         
     | 
| 
      
 352 
     | 
    
         
            +
             * For Eg: SQLCreateDB and SQLDropDB is supported only from V97fp3 onwards. In this function we open the CLI library 
         
     | 
| 
      
 353 
     | 
    
         
            +
             * using DLOpen and check if the function is defined. If yes then we allow the user to use the function, 
         
     | 
| 
      
 354 
     | 
    
         
            +
             * else throw a warning saying this is not supported 
         
     | 
| 
      
 355 
     | 
    
         
            +
             */
         
     | 
| 
      
 356 
     | 
    
         
            +
            static void ruby_ibm_db_check_if_cli_func_supported() {
         
     | 
| 
      
 357 
     | 
    
         
            +
            #ifdef _WIN32
         
     | 
| 
      
 358 
     | 
    
         
            +
               HINSTANCE cliLib = NULL;
         
     | 
| 
      
 359 
     | 
    
         
            +
            #else
         
     | 
| 
      
 360 
     | 
    
         
            +
               void *cliLib = NULL;
         
     | 
| 
      
 361 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 362 
     | 
    
         
            +
             
     | 
| 
      
 363 
     | 
    
         
            +
            #ifdef _WIN32
         
     | 
| 
      
 364 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2 );
         
     | 
| 
      
 365 
     | 
    
         
            +
            #elif _AIX
         
     | 
| 
      
 366 
     | 
    
         
            +
            /* On AIX CLI library is in archive. Hence we will need to specify flags in DLOPEN to load a member of the archive*/
         
     | 
| 
      
 367 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_MEMBER | RTLD_LAZY );
         
     | 
| 
      
 368 
     | 
    
         
            +
            #else
         
     | 
| 
      
 369 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_LAZY );
         
     | 
| 
      
 370 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 371 
     | 
    
         
            +
              if ( !cliLib ) {
         
     | 
| 
      
 372 
     | 
    
         
            +
                rb_warn("Could not load CLI library to check functionality support");
         
     | 
| 
      
 373 
     | 
    
         
            +
                createDbSupported = 0;
         
     | 
| 
      
 374 
     | 
    
         
            +
                dropDbSupported   = 0;
         
     | 
| 
      
 375 
     | 
    
         
            +
                return;
         
     | 
| 
      
 376 
     | 
    
         
            +
              }
         
     | 
| 
      
 377 
     | 
    
         
            +
              ruby_ibm_db_check_sqlcreatedb(cliLib);
         
     | 
| 
      
 378 
     | 
    
         
            +
              DLCLOSE( cliLib );
         
     | 
| 
      
 379 
     | 
    
         
            +
            }
         
     | 
| 
      
 380 
     | 
    
         
            +
             
     | 
| 
       329 
381 
     | 
    
         
             
            static void ruby_ibm_db_init_globals(struct _ibm_db_globals *ibm_db_globals)
         
     | 
| 
       330 
382 
     | 
    
         
             
            {
         
     | 
| 
       331 
383 
     | 
    
         
             
              /* env handle */
         
     | 
| 
         @@ -848,6 +900,8 @@ void ruby_init_ibm_db() 
     | 
|
| 
       848 
900 
     | 
    
         
             
              rb_attr(le_server_info, rb_intern("NON_NULLABLE_COLUMNS"), 1, 0, 0);
         
     | 
| 
       849 
901 
     | 
    
         | 
| 
       850 
902 
     | 
    
         
             
              ruby_ibm_db_load_necessary_libs();
         
     | 
| 
      
 903 
     | 
    
         
            +
             
     | 
| 
      
 904 
     | 
    
         
            +
              ruby_ibm_db_check_if_cli_func_supported();
         
     | 
| 
       851 
905 
     | 
    
         
             
            }
         
     | 
| 
       852 
906 
     | 
    
         
             
            /*  */
         
     | 
| 
       853 
907 
     | 
    
         | 
| 
         @@ -932,7 +986,7 @@ static void _ruby_ibm_db_check_sql_errors( void *conn_or_stmt, int resourceType, 
     | 
|
| 
       932 
986 
     | 
    
         | 
| 
       933 
987 
     | 
    
         
             
              if( release_gil == 1 ){
         
     | 
| 
       934 
988 
     | 
    
         | 
| 
       935 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 989 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       936 
990 
     | 
    
         
             
                  return_code  =  rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLGetDiagRec_helper, get_DiagRec_args,
         
     | 
| 
       937 
991 
     | 
    
         
             
                                            (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       938 
992 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -1042,6 +1096,7 @@ static void _ruby_ibm_db_check_sql_errors( void *conn_or_stmt, int resourceType, 
     | 
|
| 
       1042 
1096 
     | 
    
         
             
                          strncpy(conn_res->ruby_error_msg, (char*)errMsg, length );
         
     | 
| 
       1043 
1097 
     | 
    
         
             
            #endif
         
     | 
| 
       1044 
1098 
     | 
    
         
             
                          conn_res->ruby_error_msg_len  =  length;
         
     | 
| 
      
 1099 
     | 
    
         
            +
                          conn_res->sqlcode             =  sqlcode;
         
     | 
| 
       1045 
1100 
     | 
    
         
             
                          break;
         
     | 
| 
       1046 
1101 
     | 
    
         | 
| 
       1047 
1102 
     | 
    
         
             
                        case SQL_HANDLE_STMT:
         
     | 
| 
         @@ -1082,6 +1137,7 @@ static void _ruby_ibm_db_check_sql_errors( void *conn_or_stmt, int resourceType, 
     | 
|
| 
       1082 
1137 
     | 
    
         
             
                              strncpy(conn_res->ruby_error_msg, (char*)errMsg, length );
         
     | 
| 
       1083 
1138 
     | 
    
         
             
            #endif
         
     | 
| 
       1084 
1139 
     | 
    
         
             
                              conn_res->ruby_error_msg_len  =  length;
         
     | 
| 
      
 1140 
     | 
    
         
            +
                              conn_res->sqlcode             =  sqlcode;
         
     | 
| 
       1085 
1141 
     | 
    
         
             
                              break;
         
     | 
| 
       1086 
1142 
     | 
    
         | 
| 
       1087 
1143 
     | 
    
         
             
                            case DB_STMT:
         
     | 
| 
         @@ -1119,6 +1175,7 @@ static void _ruby_ibm_db_check_sql_errors( void *conn_or_stmt, int resourceType, 
     | 
|
| 
       1119 
1175 
     | 
    
         
             
                              strncpy(stmt_res->ruby_stmt_err_msg, (char*)errMsg, length );
         
     | 
| 
       1120 
1176 
     | 
    
         
             
            #endif
         
     | 
| 
       1121 
1177 
     | 
    
         
             
                              stmt_res->ruby_stmt_err_msg_len  =  length;
         
     | 
| 
      
 1178 
     | 
    
         
            +
                              stmt_res->sqlcode                =  sqlcode;
         
     | 
| 
       1122 
1179 
     | 
    
         
             
                              break; 
         
     | 
| 
       1123 
1180 
     | 
    
         | 
| 
       1124 
1181 
     | 
    
         
             
                          }  /*End of switch( resourceType )*/
         
     | 
| 
         @@ -2435,7 +2492,7 @@ static VALUE _ruby_ibm_db_connect_helper( int argc, VALUE *argv, int isPersisten 
     | 
|
| 
       2435 
2492 
     | 
    
         
             
              }
         
     | 
| 
       2436 
2493 
     | 
    
         | 
| 
       2437 
2494 
     | 
    
         
             
              /* Call the function where the actual logic is being run*/
         
     | 
| 
       2438 
     | 
    
         
            -
              #ifdef  
     | 
| 
      
 2495 
     | 
    
         
            +
              #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       2439 
2496 
     | 
    
         
             
                return_value = rb_thread_blocking_region( (void *)_ruby_ibm_db_connect_helper2, helper_args,
         
     | 
| 
       2440 
2497 
     | 
    
         
             
                                         (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       2441 
2498 
     | 
    
         
             
              #else
         
     | 
| 
         @@ -2776,6 +2833,366 @@ VALUE ibm_db_pconnect(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       2776 
2833 
     | 
    
         | 
| 
       2777 
2834 
     | 
    
         
             
              return _ruby_ibm_db_connect_helper( argc, argv, 1);
         
     | 
| 
       2778 
2835 
     | 
    
         
             
            }
         
     | 
| 
      
 2836 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2837 
     | 
    
         
            +
             * CreateDB helper
         
     | 
| 
      
 2838 
     | 
    
         
            +
             */
         
     | 
| 
      
 2839 
     | 
    
         
            +
            VALUE ruby_ibm_db_createDb_helper(VALUE connection, VALUE dbName, VALUE codeSet, VALUE mode, int createNX) {
         
     | 
| 
      
 2840 
     | 
    
         
            +
              
         
     | 
| 
      
 2841 
     | 
    
         
            +
              VALUE return_value    =  Qfalse;
         
     | 
| 
      
 2842 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 2843 
     | 
    
         
            +
              VALUE dbName_utf16    = Qnil;
         
     | 
| 
      
 2844 
     | 
    
         
            +
              VALUE codeSet_utf16   = Qnil;
         
     | 
| 
      
 2845 
     | 
    
         
            +
              VALUE mode_utf16      = Qnil;
         
     | 
| 
      
 2846 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 2847 
     | 
    
         
            +
             
     | 
| 
      
 2848 
     | 
    
         
            +
              int rc;
         
     | 
| 
      
 2849 
     | 
    
         
            +
             
     | 
| 
      
 2850 
     | 
    
         
            +
              create_drop_db_args *create_db_args = NULL;
         
     | 
| 
      
 2851 
     | 
    
         
            +
              conn_handle *conn_res;
         
     | 
| 
      
 2852 
     | 
    
         
            +
             
     | 
| 
      
 2853 
     | 
    
         
            +
              if (!NIL_P(connection)) {
         
     | 
| 
      
 2854 
     | 
    
         
            +
                Data_Get_Struct(connection, conn_handle, conn_res);
         
     | 
| 
      
 2855 
     | 
    
         
            +
             
     | 
| 
      
 2856 
     | 
    
         
            +
            	if( 0 == createDbSupported ) {
         
     | 
| 
      
 2857 
     | 
    
         
            +
                  rb_warn("Create Database not supported: This function is only supported from DB2 Client v97fp4 version and onwards");
         
     | 
| 
      
 2858 
     | 
    
         
            +
            	  return Qfalse;
         
     | 
| 
      
 2859 
     | 
    
         
            +
                }
         
     | 
| 
      
 2860 
     | 
    
         
            +
             
     | 
| 
      
 2861 
     | 
    
         
            +
                if (!conn_res->handle_active) {
         
     | 
| 
      
 2862 
     | 
    
         
            +
                  rb_warn("Connection is not active");
         
     | 
| 
      
 2863 
     | 
    
         
            +
                  return Qfalse;
         
     | 
| 
      
 2864 
     | 
    
         
            +
                }
         
     | 
| 
      
 2865 
     | 
    
         
            +
             
     | 
| 
      
 2866 
     | 
    
         
            +
            	if (!NIL_P(dbName)) {
         
     | 
| 
      
 2867 
     | 
    
         
            +
                  create_db_args = ALLOC( create_drop_db_args );
         
     | 
| 
      
 2868 
     | 
    
         
            +
            	  memset(create_db_args,'\0',sizeof(struct _ibm_db_create_drop_db_args_struct));
         
     | 
| 
      
 2869 
     | 
    
         
            +
             
     | 
| 
      
 2870 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 2871 
     | 
    
         
            +
                  dbName_utf16               =  _ruby_ibm_db_export_str_to_utf16(dbName);
         
     | 
| 
      
 2872 
     | 
    
         
            +
             
     | 
| 
      
 2873 
     | 
    
         
            +
            	  create_db_args->dbName     =  (SQLWCHAR*)RSTRING_PTR(dbName_utf16);
         
     | 
| 
      
 2874 
     | 
    
         
            +
                  create_db_args->dbName_string_len =  RSTRING_LEN(dbName_utf16)/sizeof(SQLWCHAR); /*RSTRING_LEN returns number of bytes*/
         
     | 
| 
      
 2875 
     | 
    
         
            +
             
     | 
| 
      
 2876 
     | 
    
         
            +
            	  if(!NIL_P(codeSet)){
         
     | 
| 
      
 2877 
     | 
    
         
            +
                    codeSet_utf16            =  _ruby_ibm_db_export_str_to_utf16(codeSet); 
         
     | 
| 
      
 2878 
     | 
    
         
            +
                    create_db_args->codeSet  =  (SQLWCHAR*)RSTRING_PTR(codeSet_utf16);
         
     | 
| 
      
 2879 
     | 
    
         
            +
                    create_db_args->codeSet_string_len =  RSTRING_LEN(codeSet_utf16)/sizeof(SQLWCHAR); /*RSTRING_LEN returns number of bytes*/
         
     | 
| 
      
 2880 
     | 
    
         
            +
            	  } else {
         
     | 
| 
      
 2881 
     | 
    
         
            +
                    create_db_args->codeSet  =  NULL;
         
     | 
| 
      
 2882 
     | 
    
         
            +
            	  }
         
     | 
| 
      
 2883 
     | 
    
         
            +
             
     | 
| 
      
 2884 
     | 
    
         
            +
            	  if(!NIL_P(mode)) {
         
     | 
| 
      
 2885 
     | 
    
         
            +
            	    mode_utf16               =  _ruby_ibm_db_export_str_to_utf16(mode);
         
     | 
| 
      
 2886 
     | 
    
         
            +
            		create_db_args->mode     =  (SQLWCHAR*)RSTRING_PTR(mode_utf16);
         
     | 
| 
      
 2887 
     | 
    
         
            +
                    create_db_args->mode_string_len =  RSTRING_LEN(mode_utf16)/sizeof(SQLWCHAR); /*RSTRING_LEN returns number of bytes*/
         
     | 
| 
      
 2888 
     | 
    
         
            +
            	  } else {
         
     | 
| 
      
 2889 
     | 
    
         
            +
                    create_db_args->mode     =  NULL;
         
     | 
| 
      
 2890 
     | 
    
         
            +
            	  }
         
     | 
| 
      
 2891 
     | 
    
         
            +
            #else
         
     | 
| 
      
 2892 
     | 
    
         
            +
                  create_db_args->dbName     = (SQLCHAR*)rb_str2cstr(dbName, &(create_db_args->dbName_string_len));
         
     | 
| 
      
 2893 
     | 
    
         
            +
            	  if(!NIL_P(codeSet)){
         
     | 
| 
      
 2894 
     | 
    
         
            +
                    create_db_args->codeSet  = (SQLCHAR*)rb_str2cstr(codeSet, &(create_db_args->codeSet_string_len));
         
     | 
| 
      
 2895 
     | 
    
         
            +
            	  } else {
         
     | 
| 
      
 2896 
     | 
    
         
            +
                    create_db_args->codeSet  = NULL;
         
     | 
| 
      
 2897 
     | 
    
         
            +
            	  }
         
     | 
| 
      
 2898 
     | 
    
         
            +
            	  if(!NIL_P(mode)) {
         
     | 
| 
      
 2899 
     | 
    
         
            +
                    create_db_args->mode     = (SQLCHAR*)rb_str2cstr(mode, &(create_db_args->mode_string_len));
         
     | 
| 
      
 2900 
     | 
    
         
            +
            	  } else {
         
     | 
| 
      
 2901 
     | 
    
         
            +
                    create_db_args->mode     = NULL;
         
     | 
| 
      
 2902 
     | 
    
         
            +
            	  }
         
     | 
| 
      
 2903 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 2904 
     | 
    
         
            +
            	} else {
         
     | 
| 
      
 2905 
     | 
    
         
            +
            		rb_warn("Invalid Parameter: Database Name cannot be nil");
         
     | 
| 
      
 2906 
     | 
    
         
            +
            		return Qfalse;
         
     | 
| 
      
 2907 
     | 
    
         
            +
            	}
         
     | 
| 
      
 2908 
     | 
    
         
            +
             
     | 
| 
      
 2909 
     | 
    
         
            +
            	create_db_args->conn_res = conn_res;
         
     | 
| 
      
 2910 
     | 
    
         
            +
             
     | 
| 
      
 2911 
     | 
    
         
            +
            	_ruby_ibm_db_clear_conn_err_cache();
         
     | 
| 
      
 2912 
     | 
    
         
            +
             
     | 
| 
      
 2913 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 2914 
     | 
    
         
            +
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLCreateDB_helper, create_db_args,
         
     | 
| 
      
 2915 
     | 
    
         
            +
                                   (void *)_ruby_ibm_db_Connection_level_UBF, NULL );
         
     | 
| 
      
 2916 
     | 
    
         
            +
            #else
         
     | 
| 
      
 2917 
     | 
    
         
            +
                    rc = _ruby_ibm_db_SQLCreateDB_helper( create_db_args );
         
     | 
| 
      
 2918 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 2919 
     | 
    
         
            +
             
     | 
| 
      
 2920 
     | 
    
         
            +
                  if ( rc == SQL_ERROR ) {
         
     | 
| 
      
 2921 
     | 
    
         
            +
                    conn_res->error_recno_tracker    =  1;
         
     | 
| 
      
 2922 
     | 
    
         
            +
                    conn_res->errormsg_recno_tracker =  1;
         
     | 
| 
      
 2923 
     | 
    
         
            +
                    _ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
         
     | 
| 
      
 2924 
     | 
    
         
            +
            		if(conn_res->sqlcode == -1005 && 1 == createNX) {
         
     | 
| 
      
 2925 
     | 
    
         
            +
                      return_value = Qtrue; /*Return true if database already exists and Create if not existing called*/
         
     | 
| 
      
 2926 
     | 
    
         
            +
            		  /*Clear the error messages*/
         
     | 
| 
      
 2927 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 2928 
     | 
    
         
            +
                      memset( conn_res->ruby_error_state, '\0', (SQL_SQLSTATE_SIZE + 1) * sizeof(SQLWCHAR) );
         
     | 
| 
      
 2929 
     | 
    
         
            +
                      memset( conn_res->ruby_error_msg, '\0', (DB2_MAX_ERR_MSG_LEN + 1) * sizeof(SQLWCHAR) );
         
     | 
| 
      
 2930 
     | 
    
         
            +
            #else
         
     | 
| 
      
 2931 
     | 
    
         
            +
                      memset( conn_res->ruby_error_state, '\0', SQL_SQLSTATE_SIZE + 1 );
         
     | 
| 
      
 2932 
     | 
    
         
            +
                      memset( conn_res->ruby_error_msg, '\0', DB2_MAX_ERR_MSG_LEN + 1 );
         
     | 
| 
      
 2933 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 2934 
     | 
    
         
            +
            		} else {
         
     | 
| 
      
 2935 
     | 
    
         
            +
                      return_value = Qfalse;
         
     | 
| 
      
 2936 
     | 
    
         
            +
            		}
         
     | 
| 
      
 2937 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 2938 
     | 
    
         
            +
                    return_value = Qtrue;
         
     | 
| 
      
 2939 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2940 
     | 
    
         
            +
              }
         
     | 
| 
      
 2941 
     | 
    
         
            +
             
     | 
| 
      
 2942 
     | 
    
         
            +
              /*Free memory allocated*/
         
     | 
| 
      
 2943 
     | 
    
         
            +
              if( create_db_args != NULL ) {
         
     | 
| 
      
 2944 
     | 
    
         
            +
                ruby_xfree( create_db_args );
         
     | 
| 
      
 2945 
     | 
    
         
            +
                create_db_args = NULL;
         
     | 
| 
      
 2946 
     | 
    
         
            +
              }
         
     | 
| 
      
 2947 
     | 
    
         
            +
             
     | 
| 
      
 2948 
     | 
    
         
            +
              return return_value;  
         
     | 
| 
      
 2949 
     | 
    
         
            +
            }
         
     | 
| 
      
 2950 
     | 
    
         
            +
            /*  */
         
     | 
| 
      
 2951 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2952 
     | 
    
         
            +
             * IBM_DB.createDB -- Creates a Database
         
     | 
| 
      
 2953 
     | 
    
         
            +
             *
         
     | 
| 
      
 2954 
     | 
    
         
            +
             * ===Description
         
     | 
| 
      
 2955 
     | 
    
         
            +
             * bool IBM_DB.createDB ( resource connection , string dbName [, String codeSet, String mode] )
         
     | 
| 
      
 2956 
     | 
    
         
            +
             *
         
     | 
| 
      
 2957 
     | 
    
         
            +
             * Creates a database with the specified name. Returns true if operation successful else false
         
     | 
| 
      
 2958 
     | 
    
         
            +
             *
         
     | 
| 
      
 2959 
     | 
    
         
            +
             * ===Parameters
         
     | 
| 
      
 2960 
     | 
    
         
            +
             * 
         
     | 
| 
      
 2961 
     | 
    
         
            +
             * connection
         
     | 
| 
      
 2962 
     | 
    
         
            +
             *     A valid database connection resource variable as returned from IBM_DB.connect() or IBM_DB.pconnect() with parameter ATTACH=true specified.
         
     | 
| 
      
 2963 
     | 
    
         
            +
             *     IBM_DB.connect('DRIVER={IBM DB2 ODBC DRIVER};ATTACH=true;HOSTNAME=myhost;PORT=1234;PROTOCOL=TCPIP;UID=user;PWD=secret;','','')
         
     | 
| 
      
 2964 
     | 
    
         
            +
             *     Note: Database is not specified. In this case we connect to the instance only.
         
     | 
| 
      
 2965 
     | 
    
         
            +
             *
         
     | 
| 
      
 2966 
     | 
    
         
            +
             * dbName
         
     | 
| 
      
 2967 
     | 
    
         
            +
             *     Name of the database that is to be created.
         
     | 
| 
      
 2968 
     | 
    
         
            +
             *
         
     | 
| 
      
 2969 
     | 
    
         
            +
             * codeSet
         
     | 
| 
      
 2970 
     | 
    
         
            +
             *      Database code set information.
         
     | 
| 
      
 2971 
     | 
    
         
            +
             *      Note: If the value of the codeSet argument is not specified, 
         
     | 
| 
      
 2972 
     | 
    
         
            +
             *      the database is created in the Unicode code page for DB2 data servers and in the UTF-8 code page for IDS data servers
         
     | 
| 
      
 2973 
     | 
    
         
            +
             *
         
     | 
| 
      
 2974 
     | 
    
         
            +
             * mode
         
     | 
| 
      
 2975 
     | 
    
         
            +
             *      Database logging mode.
         
     | 
| 
      
 2976 
     | 
    
         
            +
             *      Note: This value is applicable only to IDS data servers
         
     | 
| 
      
 2977 
     | 
    
         
            +
             *
         
     | 
| 
      
 2978 
     | 
    
         
            +
             * ===Return Values
         
     | 
| 
      
 2979 
     | 
    
         
            +
             * 
         
     | 
| 
      
 2980 
     | 
    
         
            +
             * Returns TRUE on success or FALSE on failure. 
         
     | 
| 
      
 2981 
     | 
    
         
            +
             */
         
     | 
| 
      
 2982 
     | 
    
         
            +
            VALUE ibm_db_createDB(int argc, VALUE *argv, VALUE self)
         
     | 
| 
      
 2983 
     | 
    
         
            +
            {
         
     | 
| 
      
 2984 
     | 
    
         
            +
              VALUE connection   = Qnil;
         
     | 
| 
      
 2985 
     | 
    
         
            +
              VALUE dbName       = Qnil;
         
     | 
| 
      
 2986 
     | 
    
         
            +
              VALUE codeSet      = Qnil;
         
     | 
| 
      
 2987 
     | 
    
         
            +
              VALUE mode         = Qnil;
         
     | 
| 
      
 2988 
     | 
    
         
            +
             
     | 
| 
      
 2989 
     | 
    
         
            +
              rb_scan_args(argc, argv, "22", &connection, &dbName, &codeSet, &mode);
         
     | 
| 
      
 2990 
     | 
    
         
            +
             
     | 
| 
      
 2991 
     | 
    
         
            +
              return ruby_ibm_db_createDb_helper(connection, dbName, codeSet, mode, 0);  
         
     | 
| 
      
 2992 
     | 
    
         
            +
            }
         
     | 
| 
      
 2993 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2994 
     | 
    
         
            +
             *  DropDb helper
         
     | 
| 
      
 2995 
     | 
    
         
            +
             */
         
     | 
| 
      
 2996 
     | 
    
         
            +
            VALUE ruby_ibm_db_dropDb_helper(VALUE connection, VALUE dbName) {
         
     | 
| 
      
 2997 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 2998 
     | 
    
         
            +
              VALUE dbName_utf16    = Qnil;
         
     | 
| 
      
 2999 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 3000 
     | 
    
         
            +
             
     | 
| 
      
 3001 
     | 
    
         
            +
              VALUE return_value =  Qfalse;
         
     | 
| 
      
 3002 
     | 
    
         
            +
             
     | 
| 
      
 3003 
     | 
    
         
            +
              int rc;
         
     | 
| 
      
 3004 
     | 
    
         
            +
             
     | 
| 
      
 3005 
     | 
    
         
            +
              create_drop_db_args *drop_db_args = NULL;
         
     | 
| 
      
 3006 
     | 
    
         
            +
              conn_handle         *conn_res     = NULL;
         
     | 
| 
      
 3007 
     | 
    
         
            +
             
     | 
| 
      
 3008 
     | 
    
         
            +
              if (!NIL_P(connection)) {
         
     | 
| 
      
 3009 
     | 
    
         
            +
                Data_Get_Struct(connection, conn_handle, conn_res);
         
     | 
| 
      
 3010 
     | 
    
         
            +
             
     | 
| 
      
 3011 
     | 
    
         
            +
            	if( 0 == dropDbSupported ) {
         
     | 
| 
      
 3012 
     | 
    
         
            +
                  rb_warn("Drop Database not supported: This function is only supported from DB2 Client v97fp4 version and onwards");
         
     | 
| 
      
 3013 
     | 
    
         
            +
            	  return Qfalse;
         
     | 
| 
      
 3014 
     | 
    
         
            +
                }
         
     | 
| 
      
 3015 
     | 
    
         
            +
             
     | 
| 
      
 3016 
     | 
    
         
            +
                if (!conn_res->handle_active) {
         
     | 
| 
      
 3017 
     | 
    
         
            +
                  rb_warn("Connection is not active");
         
     | 
| 
      
 3018 
     | 
    
         
            +
                  return Qfalse;
         
     | 
| 
      
 3019 
     | 
    
         
            +
                }
         
     | 
| 
      
 3020 
     | 
    
         
            +
             
     | 
| 
      
 3021 
     | 
    
         
            +
            	if (!NIL_P(dbName)) {
         
     | 
| 
      
 3022 
     | 
    
         
            +
                  drop_db_args = ALLOC( create_drop_db_args );
         
     | 
| 
      
 3023 
     | 
    
         
            +
            	  memset(drop_db_args,'\0',sizeof(struct _ibm_db_create_drop_db_args_struct));
         
     | 
| 
      
 3024 
     | 
    
         
            +
             
     | 
| 
      
 3025 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 3026 
     | 
    
         
            +
                  dbName_utf16             =  _ruby_ibm_db_export_str_to_utf16(dbName);
         
     | 
| 
      
 3027 
     | 
    
         
            +
             
     | 
| 
      
 3028 
     | 
    
         
            +
            	  drop_db_args->dbName     =  (SQLWCHAR*)RSTRING_PTR(dbName_utf16);
         
     | 
| 
      
 3029 
     | 
    
         
            +
                  drop_db_args->dbName_string_len =  RSTRING_LEN(dbName_utf16)/sizeof(SQLWCHAR); /*RSTRING_LEN returns number of bytes*/
         
     | 
| 
      
 3030 
     | 
    
         
            +
            #else
         
     | 
| 
      
 3031 
     | 
    
         
            +
                  drop_db_args->dbName     =  (SQLCHAR*)rb_str2cstr(dbName, &(drop_db_args->dbName_string_len));
         
     | 
| 
      
 3032 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 3033 
     | 
    
         
            +
            	} else {
         
     | 
| 
      
 3034 
     | 
    
         
            +
            		rb_warn("Invalid Parameter: Database Name cannot be nil");
         
     | 
| 
      
 3035 
     | 
    
         
            +
            		return Qfalse;
         
     | 
| 
      
 3036 
     | 
    
         
            +
            	}
         
     | 
| 
      
 3037 
     | 
    
         
            +
             
     | 
| 
      
 3038 
     | 
    
         
            +
            	drop_db_args->conn_res = conn_res;
         
     | 
| 
      
 3039 
     | 
    
         
            +
             
     | 
| 
      
 3040 
     | 
    
         
            +
            	_ruby_ibm_db_clear_conn_err_cache();
         
     | 
| 
      
 3041 
     | 
    
         
            +
             
     | 
| 
      
 3042 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 3043 
     | 
    
         
            +
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLDropDB_helper, drop_db_args,
         
     | 
| 
      
 3044 
     | 
    
         
            +
                                   (void *)_ruby_ibm_db_Connection_level_UBF, NULL );
         
     | 
| 
      
 3045 
     | 
    
         
            +
            #else
         
     | 
| 
      
 3046 
     | 
    
         
            +
                    rc = _ruby_ibm_db_SQLDropDB_helper( drop_db_args );
         
     | 
| 
      
 3047 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 3048 
     | 
    
         
            +
             
     | 
| 
      
 3049 
     | 
    
         
            +
                  if ( rc == SQL_ERROR ) {
         
     | 
| 
      
 3050 
     | 
    
         
            +
                    conn_res->error_recno_tracker    =  1;
         
     | 
| 
      
 3051 
     | 
    
         
            +
                    conn_res->errormsg_recno_tracker =  1;
         
     | 
| 
      
 3052 
     | 
    
         
            +
                    _ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
         
     | 
| 
      
 3053 
     | 
    
         
            +
                    return_value = Qfalse;
         
     | 
| 
      
 3054 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 3055 
     | 
    
         
            +
                    return_value = Qtrue;
         
     | 
| 
      
 3056 
     | 
    
         
            +
                  }
         
     | 
| 
      
 3057 
     | 
    
         
            +
              }
         
     | 
| 
      
 3058 
     | 
    
         
            +
             
     | 
| 
      
 3059 
     | 
    
         
            +
              /*Free memory allocated*/
         
     | 
| 
      
 3060 
     | 
    
         
            +
              if( drop_db_args != NULL ) {
         
     | 
| 
      
 3061 
     | 
    
         
            +
                ruby_xfree( drop_db_args );
         
     | 
| 
      
 3062 
     | 
    
         
            +
                drop_db_args = NULL;
         
     | 
| 
      
 3063 
     | 
    
         
            +
              }
         
     | 
| 
      
 3064 
     | 
    
         
            +
             
     | 
| 
      
 3065 
     | 
    
         
            +
              return return_value;  
         
     | 
| 
      
 3066 
     | 
    
         
            +
            }
         
     | 
| 
      
 3067 
     | 
    
         
            +
            /*  */
         
     | 
| 
      
 3068 
     | 
    
         
            +
            /*
         
     | 
| 
      
 3069 
     | 
    
         
            +
             * IBM_DB.dropDB -- Drops the mentioned Database
         
     | 
| 
      
 3070 
     | 
    
         
            +
             *
         
     | 
| 
      
 3071 
     | 
    
         
            +
             * ===Description
         
     | 
| 
      
 3072 
     | 
    
         
            +
             * bool IBM_DB.dropDB ( resource connection , string dbName [, String codeSet, String mode] )
         
     | 
| 
      
 3073 
     | 
    
         
            +
             *
         
     | 
| 
      
 3074 
     | 
    
         
            +
             * Drops a database with the specified name. Returns true if operation successful else false
         
     | 
| 
      
 3075 
     | 
    
         
            +
             *
         
     | 
| 
      
 3076 
     | 
    
         
            +
             * ===Parameters
         
     | 
| 
      
 3077 
     | 
    
         
            +
             * 
         
     | 
| 
      
 3078 
     | 
    
         
            +
             * connection
         
     | 
| 
      
 3079 
     | 
    
         
            +
             *     A valid database connection resource variable as returned from IBM_DB.connect() or IBM_DB.pconnect() with parameter ATTACH=true specified.
         
     | 
| 
      
 3080 
     | 
    
         
            +
             *     IBM_DB.connect('DRIVER={IBM DB2 ODBC DRIVER};ATTACH=true;HOSTNAME=myhost;PORT=1234;PROTOCOL=TCPIP;UID=user;PWD=secret;','','')
         
     | 
| 
      
 3081 
     | 
    
         
            +
             *     Note: Database is not specified. In this case we connect to the instance only.
         
     | 
| 
      
 3082 
     | 
    
         
            +
             * dbName
         
     | 
| 
      
 3083 
     | 
    
         
            +
             *     Name of the database that is to be created.
         
     | 
| 
      
 3084 
     | 
    
         
            +
             *
         
     | 
| 
      
 3085 
     | 
    
         
            +
             * ===Return Values
         
     | 
| 
      
 3086 
     | 
    
         
            +
             * 
         
     | 
| 
      
 3087 
     | 
    
         
            +
             * Returns TRUE on success or FALSE on failure. 
         
     | 
| 
      
 3088 
     | 
    
         
            +
             */
         
     | 
| 
      
 3089 
     | 
    
         
            +
            VALUE ibm_db_dropDB(int argc, VALUE *argv, VALUE self)
         
     | 
| 
      
 3090 
     | 
    
         
            +
            {
         
     | 
| 
      
 3091 
     | 
    
         
            +
              VALUE connection      = Qnil;
         
     | 
| 
      
 3092 
     | 
    
         
            +
              VALUE dbName          = Qnil;
         
     | 
| 
      
 3093 
     | 
    
         
            +
             
     | 
| 
      
 3094 
     | 
    
         
            +
              rb_scan_args(argc, argv, "2", &connection, &dbName);
         
     | 
| 
      
 3095 
     | 
    
         
            +
             
     | 
| 
      
 3096 
     | 
    
         
            +
              return ruby_ibm_db_dropDb_helper(connection, dbName);
         
     | 
| 
      
 3097 
     | 
    
         
            +
            }
         
     | 
| 
      
 3098 
     | 
    
         
            +
            /*  */
         
     | 
| 
      
 3099 
     | 
    
         
            +
            /*
         
     | 
| 
      
 3100 
     | 
    
         
            +
             * IBM_DB.recreateDB -- Recreates an Existing database
         
     | 
| 
      
 3101 
     | 
    
         
            +
             *
         
     | 
| 
      
 3102 
     | 
    
         
            +
             * ===Description
         
     | 
| 
      
 3103 
     | 
    
         
            +
             * bool IBM_DB.recreateDB ( resource connection , string dbName [, String codeSet, String mode] )
         
     | 
| 
      
 3104 
     | 
    
         
            +
             *
         
     | 
| 
      
 3105 
     | 
    
         
            +
             * Recreates a database with the specified name. This method will drop an existing database and then re-create it.
         
     | 
| 
      
 3106 
     | 
    
         
            +
             * If database doesnot exist the method will return false.
         
     | 
| 
      
 3107 
     | 
    
         
            +
             * Returns true if operation successful else false
         
     | 
| 
      
 3108 
     | 
    
         
            +
             *
         
     | 
| 
      
 3109 
     | 
    
         
            +
             * ===Parameters
         
     | 
| 
      
 3110 
     | 
    
         
            +
             * 
         
     | 
| 
      
 3111 
     | 
    
         
            +
             * connection
         
     | 
| 
      
 3112 
     | 
    
         
            +
             *     A valid database connection resource variable as returned from IBM_DB.connect() or IBM_DB.pconnect() with parameter ATTACH=true specified.
         
     | 
| 
      
 3113 
     | 
    
         
            +
             *     IBM_DB.connect('DRIVER={IBM DB2 ODBC DRIVER};ATTACH=true;HOSTNAME=myhost;PORT=1234;PROTOCOL=TCPIP;UID=user;PWD=secret;','','')
         
     | 
| 
      
 3114 
     | 
    
         
            +
             *     Note: Database is not specified. In this case we connect to the instance only.
         
     | 
| 
      
 3115 
     | 
    
         
            +
             *
         
     | 
| 
      
 3116 
     | 
    
         
            +
             * dbName
         
     | 
| 
      
 3117 
     | 
    
         
            +
             *     Name of the database that is to be created.
         
     | 
| 
      
 3118 
     | 
    
         
            +
             *
         
     | 
| 
      
 3119 
     | 
    
         
            +
             * codeSet
         
     | 
| 
      
 3120 
     | 
    
         
            +
             *      Database code set information.
         
     | 
| 
      
 3121 
     | 
    
         
            +
             *      Note: If the value of the codeSet argument is not specified, 
         
     | 
| 
      
 3122 
     | 
    
         
            +
             *      the database is created in the Unicode code page for DB2 data servers and in the UTF-8 code page for IDS data servers
         
     | 
| 
      
 3123 
     | 
    
         
            +
             *
         
     | 
| 
      
 3124 
     | 
    
         
            +
             * mode
         
     | 
| 
      
 3125 
     | 
    
         
            +
             *      Database logging mode.
         
     | 
| 
      
 3126 
     | 
    
         
            +
             *      Note: This value is applicable only to IDS data servers
         
     | 
| 
      
 3127 
     | 
    
         
            +
             *
         
     | 
| 
      
 3128 
     | 
    
         
            +
             * ===Return Values
         
     | 
| 
      
 3129 
     | 
    
         
            +
             * 
         
     | 
| 
      
 3130 
     | 
    
         
            +
             * Returns TRUE on success or FALSE on failure. 
         
     | 
| 
      
 3131 
     | 
    
         
            +
             */
         
     | 
| 
      
 3132 
     | 
    
         
            +
            /*VALUE ibm_db_recreateDB(int argc, VALUE *argv, VALUE self)
         
     | 
| 
      
 3133 
     | 
    
         
            +
            {
         
     | 
| 
      
 3134 
     | 
    
         
            +
              VALUE connection   = Qnil;
         
     | 
| 
      
 3135 
     | 
    
         
            +
              VALUE dbName       = Qnil;
         
     | 
| 
      
 3136 
     | 
    
         
            +
              VALUE codeSet      = Qnil;
         
     | 
| 
      
 3137 
     | 
    
         
            +
              VALUE mode         = Qnil;
         
     | 
| 
      
 3138 
     | 
    
         
            +
              VALUE return_value = Qnil;
         
     | 
| 
      
 3139 
     | 
    
         
            +
             
     | 
| 
      
 3140 
     | 
    
         
            +
              rb_scan_args(argc, argv, "22", &connection, &dbName, &codeSet, &mode);
         
     | 
| 
      
 3141 
     | 
    
         
            +
             
     | 
| 
      
 3142 
     | 
    
         
            +
              return_value = ruby_ibm_db_dropDb_helper(connection, dbName);
         
     | 
| 
      
 3143 
     | 
    
         
            +
             
     | 
| 
      
 3144 
     | 
    
         
            +
              if(return_value == Qfalse) {
         
     | 
| 
      
 3145 
     | 
    
         
            +
                return Qfalse;
         
     | 
| 
      
 3146 
     | 
    
         
            +
              }
         
     | 
| 
      
 3147 
     | 
    
         
            +
             
     | 
| 
      
 3148 
     | 
    
         
            +
              return ruby_ibm_db_createDb_helper(connection, dbName, codeSet, mode);  
         
     | 
| 
      
 3149 
     | 
    
         
            +
            }*/
         
     | 
| 
      
 3150 
     | 
    
         
            +
            /*  */
         
     | 
| 
      
 3151 
     | 
    
         
            +
            /*
         
     | 
| 
      
 3152 
     | 
    
         
            +
             * IBM_DB.createDBNX -- creates a database if it does not exist aleady
         
     | 
| 
      
 3153 
     | 
    
         
            +
             *
         
     | 
| 
      
 3154 
     | 
    
         
            +
             * ===Description
         
     | 
| 
      
 3155 
     | 
    
         
            +
             * bool IBM_DB.createDBNX ( resource connection , string dbName [, String codeSet, String mode] )
         
     | 
| 
      
 3156 
     | 
    
         
            +
             *
         
     | 
| 
      
 3157 
     | 
    
         
            +
             * Creates a database with the specified name, if it does not exist already. This method will drop an existing database and then re-create it.
         
     | 
| 
      
 3158 
     | 
    
         
            +
             * If database doesnot exist the method will return false.
         
     | 
| 
      
 3159 
     | 
    
         
            +
             * Returns true if operation successful else false
         
     | 
| 
      
 3160 
     | 
    
         
            +
             *
         
     | 
| 
      
 3161 
     | 
    
         
            +
             * ===Parameters
         
     | 
| 
      
 3162 
     | 
    
         
            +
             * 
         
     | 
| 
      
 3163 
     | 
    
         
            +
             * connection
         
     | 
| 
      
 3164 
     | 
    
         
            +
             *     A valid database connection resource variable as returned from IBM_DB.connect() or IBM_DB.pconnect() with parameter ATTACH=true specified.
         
     | 
| 
      
 3165 
     | 
    
         
            +
             *     IBM_DB.connect('DRIVER={IBM DB2 ODBC DRIVER};ATTACH=true;HOSTNAME=myhost;PORT=1234;PROTOCOL=TCPIP;UID=user;PWD=secret;','','')
         
     | 
| 
      
 3166 
     | 
    
         
            +
             *     Note: Database is not specified. In this case we connect to the instance only.
         
     | 
| 
      
 3167 
     | 
    
         
            +
             *
         
     | 
| 
      
 3168 
     | 
    
         
            +
             * dbName
         
     | 
| 
      
 3169 
     | 
    
         
            +
             *     Name of the database that is to be created.
         
     | 
| 
      
 3170 
     | 
    
         
            +
             *
         
     | 
| 
      
 3171 
     | 
    
         
            +
             * codeSet
         
     | 
| 
      
 3172 
     | 
    
         
            +
             *      Database code set information.
         
     | 
| 
      
 3173 
     | 
    
         
            +
             *      Note: If the value of the codeSet argument is not specified, 
         
     | 
| 
      
 3174 
     | 
    
         
            +
             *      the database is created in the Unicode code page for DB2 data servers and in the UTF-8 code page for IDS data servers
         
     | 
| 
      
 3175 
     | 
    
         
            +
             *
         
     | 
| 
      
 3176 
     | 
    
         
            +
             * mode
         
     | 
| 
      
 3177 
     | 
    
         
            +
             *      Database logging mode.
         
     | 
| 
      
 3178 
     | 
    
         
            +
             *      Note: This value is applicable only to IDS data servers
         
     | 
| 
      
 3179 
     | 
    
         
            +
             *
         
     | 
| 
      
 3180 
     | 
    
         
            +
             * ===Return Values
         
     | 
| 
      
 3181 
     | 
    
         
            +
             * 
         
     | 
| 
      
 3182 
     | 
    
         
            +
             * Returns TRUE on success or FALSE on failure. 
         
     | 
| 
      
 3183 
     | 
    
         
            +
             */
         
     | 
| 
      
 3184 
     | 
    
         
            +
            VALUE ibm_db_createDBNX(int argc, VALUE *argv, VALUE self)
         
     | 
| 
      
 3185 
     | 
    
         
            +
            {
         
     | 
| 
      
 3186 
     | 
    
         
            +
              VALUE connection   = Qnil;
         
     | 
| 
      
 3187 
     | 
    
         
            +
              VALUE dbName       = Qnil;
         
     | 
| 
      
 3188 
     | 
    
         
            +
              VALUE codeSet      = Qnil;
         
     | 
| 
      
 3189 
     | 
    
         
            +
              VALUE mode         = Qnil;
         
     | 
| 
      
 3190 
     | 
    
         
            +
              VALUE return_value = Qnil;
         
     | 
| 
      
 3191 
     | 
    
         
            +
             
     | 
| 
      
 3192 
     | 
    
         
            +
              rb_scan_args(argc, argv, "22", &connection, &dbName, &codeSet, &mode);
         
     | 
| 
      
 3193 
     | 
    
         
            +
             
     | 
| 
      
 3194 
     | 
    
         
            +
              return ruby_ibm_db_createDb_helper(connection, dbName, codeSet, mode, 1);  
         
     | 
| 
      
 3195 
     | 
    
         
            +
            }
         
     | 
| 
       2779 
3196 
     | 
    
         
             
            /*  */
         
     | 
| 
       2780 
3197 
     | 
    
         | 
| 
       2781 
3198 
     | 
    
         
             
            /*
         
     | 
| 
         @@ -2984,7 +3401,7 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long 
     | 
|
| 
       2984 
3401 
     | 
    
         
             
                case 3:
         
     | 
| 
       2985 
3402 
     | 
    
         
             
                  param_type = SQL_PARAM_INPUT;
         
     | 
| 
       2986 
3403 
     | 
    
         | 
| 
       2987 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 3404 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       2988 
3405 
     | 
    
         
             
                    rc  =  rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
         
     | 
| 
       2989 
3406 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
         
     | 
| 
       2990 
3407 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -3004,7 +3421,7 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long 
     | 
|
| 
       3004 
3421 
     | 
    
         | 
| 
       3005 
3422 
     | 
    
         
             
                case 4:
         
     | 
| 
       3006 
3423 
     | 
    
         | 
| 
       3007 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 3424 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3008 
3425 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
         
     | 
| 
       3009 
3426 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
         
     | 
| 
       3010 
3427 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -3024,7 +3441,7 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long 
     | 
|
| 
       3024 
3441 
     | 
    
         | 
| 
       3025 
3442 
     | 
    
         
             
                case 5:
         
     | 
| 
       3026 
3443 
     | 
    
         | 
| 
       3027 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 3444 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3028 
3445 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
         
     | 
| 
       3029 
3446 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       3030 
3447 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -3045,7 +3462,7 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long 
     | 
|
| 
       3045 
3462 
     | 
    
         | 
| 
       3046 
3463 
     | 
    
         
             
                case 6:
         
     | 
| 
       3047 
3464 
     | 
    
         | 
| 
       3048 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 3465 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3049 
3466 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
         
     | 
| 
       3050 
3467 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       3051 
3468 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -3277,7 +3694,7 @@ VALUE ibm_db_close(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       3277 
3694 
     | 
    
         
             
                    end_X_args->handleType      =  SQL_HANDLE_DBC;
         
     | 
| 
       3278 
3695 
     | 
    
         
             
                    end_X_args->completionType  =  SQL_ROLLBACK;        /*Remeber you are rolling back the transaction*/
         
     | 
| 
       3279 
3696 
     | 
    
         | 
| 
       3280 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 3697 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3281 
3698 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
         
     | 
| 
       3282 
3699 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       3283 
3700 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -3295,7 +3712,7 @@ VALUE ibm_db_close(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       3295 
3712 
     | 
    
         
             
                    }
         
     | 
| 
       3296 
3713 
     | 
    
         
             
                  }
         
     | 
| 
       3297 
3714 
     | 
    
         | 
| 
       3298 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 3715 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3299 
3716 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLDisconnect_helper, &(conn_res->hdbc),
         
     | 
| 
       3300 
3717 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       3301 
3718 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -3472,7 +3889,7 @@ VALUE ibm_db_column_privileges(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       3472 
3889 
     | 
    
         
             
                      }
         
     | 
| 
       3473 
3890 
     | 
    
         
             
                      col_privileges_args->stmt_res  =  stmt_res;
         
     | 
| 
       3474 
3891 
     | 
    
         | 
| 
       3475 
     | 
    
         
            -
                      #ifdef  
     | 
| 
      
 3892 
     | 
    
         
            +
                      #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3476 
3893 
     | 
    
         
             
                        rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLColumnPrivileges_helper, col_privileges_args,
         
     | 
| 
       3477 
3894 
     | 
    
         
             
                                       (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       3478 
3895 
     | 
    
         
             
                      #else
         
     | 
| 
         @@ -3652,7 +4069,7 @@ VALUE ibm_db_columns(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       3652 
4069 
     | 
    
         
             
                    }
         
     | 
| 
       3653 
4070 
     | 
    
         
             
                    col_metadata_args->stmt_res  =  stmt_res;
         
     | 
| 
       3654 
4071 
     | 
    
         | 
| 
       3655 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 4072 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3656 
4073 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLColumns_helper, col_metadata_args,
         
     | 
| 
       3657 
4074 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       3658 
4075 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -3818,7 +4235,7 @@ VALUE ibm_db_foreign_keys(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       3818 
4235 
     | 
    
         | 
| 
       3819 
4236 
     | 
    
         
             
                    col_metadata_args->stmt_res  =  stmt_res;
         
     | 
| 
       3820 
4237 
     | 
    
         | 
| 
       3821 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 4238 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3822 
4239 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLForeignKeys_helper, col_metadata_args,
         
     | 
| 
       3823 
4240 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       3824 
4241 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -3974,7 +4391,7 @@ VALUE ibm_db_primary_keys(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       3974 
4391 
     | 
    
         
             
                    }
         
     | 
| 
       3975 
4392 
     | 
    
         
             
                    col_metadata_args->stmt_res  =  stmt_res;
         
     | 
| 
       3976 
4393 
     | 
    
         | 
| 
       3977 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 4394 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       3978 
4395 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLPrimaryKeys_helper, col_metadata_args,
         
     | 
| 
       3979 
4396 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       3980 
4397 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -4165,7 +4582,7 @@ VALUE ibm_db_procedure_columns(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       4165 
4582 
     | 
    
         
             
                    }
         
     | 
| 
       4166 
4583 
     | 
    
         
             
                    col_metadata_args->stmt_res  =  stmt_res;
         
     | 
| 
       4167 
4584 
     | 
    
         | 
| 
       4168 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 4585 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       4169 
4586 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLProcedureColumns_helper, col_metadata_args,
         
     | 
| 
       4170 
4587 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
         
     | 
| 
       4171 
4588 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -4322,7 +4739,7 @@ VALUE ibm_db_procedures(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       4322 
4739 
     | 
    
         
             
                    }
         
     | 
| 
       4323 
4740 
     | 
    
         
             
                    proc_metadata_args->stmt_res     =  stmt_res;
         
     | 
| 
       4324 
4741 
     | 
    
         | 
| 
       4325 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 4742 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       4326 
4743 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLProcedures_helper, proc_metadata_args,
         
     | 
| 
       4327 
4744 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
         
     | 
| 
       4328 
4745 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -4499,7 +4916,7 @@ VALUE ibm_db_special_columns(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       4499 
4916 
     | 
    
         
             
                    }
         
     | 
| 
       4500 
4917 
     | 
    
         
             
                    col_metadata_args->stmt_res       =  stmt_res;
         
     | 
| 
       4501 
4918 
     | 
    
         | 
| 
       4502 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 4919 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       4503 
4920 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLSpecialColumns_helper, col_metadata_args,
         
     | 
| 
       4504 
4921 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
         
     | 
| 
       4505 
4922 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -4694,7 +5111,7 @@ VALUE ibm_db_statistics(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       4694 
5111 
     | 
    
         
             
                    }
         
     | 
| 
       4695 
5112 
     | 
    
         
             
                    col_metadata_args->stmt_res      =  stmt_res;
         
     | 
| 
       4696 
5113 
     | 
    
         | 
| 
       4697 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 5114 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       4698 
5115 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLStatistics_helper, col_metadata_args,
         
     | 
| 
       4699 
5116 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       4700 
5117 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -4853,7 +5270,7 @@ VALUE ibm_db_table_privileges(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       4853 
5270 
     | 
    
         | 
| 
       4854 
5271 
     | 
    
         
             
                    table_privileges_args->stmt_res       =  stmt_res;
         
     | 
| 
       4855 
5272 
     | 
    
         | 
| 
       4856 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 5273 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       4857 
5274 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLTablePrivileges_helper, table_privileges_args,
         
     | 
| 
       4858 
5275 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       4859 
5276 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -5027,7 +5444,7 @@ VALUE ibm_db_tables(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       5027 
5444 
     | 
    
         | 
| 
       5028 
5445 
     | 
    
         
             
                    table_metadata_args->stmt_res      =  stmt_res;
         
     | 
| 
       5029 
5446 
     | 
    
         | 
| 
       5030 
     | 
    
         
            -
                    #ifdef  
     | 
| 
      
 5447 
     | 
    
         
            +
                    #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       5031 
5448 
     | 
    
         
             
                      rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLTables_helper, table_metadata_args,
         
     | 
| 
       5032 
5449 
     | 
    
         
             
                                     (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       5033 
5450 
     | 
    
         
             
                    #else
         
     | 
| 
         @@ -5109,7 +5526,7 @@ VALUE ibm_db_commit(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       5109 
5526 
     | 
    
         
             
                end_X_args->handleType      =  SQL_HANDLE_DBC;
         
     | 
| 
       5110 
5527 
     | 
    
         
             
                end_X_args->completionType  =  SQL_COMMIT;        /*Remeber you are Commiting the transaction*/
         
     | 
| 
       5111 
5528 
     | 
    
         | 
| 
       5112 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 5529 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       5113 
5530 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
         
     | 
| 
       5114 
5531 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       5115 
5532 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -5189,7 +5606,7 @@ static int _ruby_ibm_db_do_prepare(conn_handle *conn_res, VALUE stmt, stmt_handl 
     | 
|
| 
       5189 
5606 
     | 
    
         
             
                prepare_args->stmt_res    =  stmt_res;
         
     | 
| 
       5190 
5607 
     | 
    
         | 
| 
       5191 
5608 
     | 
    
         
             
                /* Prepare the stmt. The cursor type requested has already been set in _ruby_ibm_db_assign_options */
         
     | 
| 
       5192 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 5609 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       5193 
5610 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLPrepare_helper, prepare_args,
         
     | 
| 
       5194 
5611 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       5195 
5612 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -5327,7 +5744,7 @@ VALUE ibm_db_exec(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       5327 
5744 
     | 
    
         | 
| 
       5328 
5745 
     | 
    
         
             
                  exec_direct_args->stmt_res    =  stmt_res;
         
     | 
| 
       5329 
5746 
     | 
    
         | 
| 
       5330 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 5747 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       5331 
5748 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLExecDirect_helper, exec_direct_args,
         
     | 
| 
       5332 
5749 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       5333 
5750 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -5402,7 +5819,7 @@ VALUE ibm_db_free_result(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       5402 
5819 
     | 
    
         
             
                  freeStmt_args->stmt_res  =  stmt_res;
         
     | 
| 
       5403 
5820 
     | 
    
         
             
                  freeStmt_args->option    =  SQL_CLOSE;
         
     | 
| 
       5404 
5821 
     | 
    
         | 
| 
       5405 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 5822 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       5406 
5823 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLFreeStmt_helper, freeStmt_args, 
         
     | 
| 
       5407 
5824 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       5408 
5825 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -6507,7 +6924,7 @@ VALUE ibm_db_execute(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       6507 
6924 
     | 
    
         
             
                bind_array->num               =  0;
         
     | 
| 
       6508 
6925 
     | 
    
         
             
                bind_array->error             =  &error;
         
     | 
| 
       6509 
6926 
     | 
    
         | 
| 
       6510 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 6927 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       6511 
6928 
     | 
    
         
             
                  ret_value = rb_thread_blocking_region( (void *)_ruby_ibm_db_execute_helper, bind_array,
         
     | 
| 
       6512 
6929 
     | 
    
         
             
                                        (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       6513 
6930 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -7292,7 +7709,7 @@ VALUE ibm_db_next_result(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       7292 
7709 
     | 
    
         
             
                  nextresultparams->stmt_res  =  stmt_res;
         
     | 
| 
       7293 
7710 
     | 
    
         
             
                  nextresultparams->new_hstmt =  &new_hstmt;
         
     | 
| 
       7294 
7711 
     | 
    
         | 
| 
       7295 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 7712 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       7296 
7713 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLNextResult_helper, nextresultparams,
         
     | 
| 
       7297 
7714 
     | 
    
         
             
                                   (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       7298 
7715 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -7391,7 +7808,7 @@ VALUE ibm_db_num_fields(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       7391 
7808 
     | 
    
         
             
                result_cols_args->stmt_res  =  stmt_res;
         
     | 
| 
       7392 
7809 
     | 
    
         
             
                result_cols_args->count     =  0;
         
     | 
| 
       7393 
7810 
     | 
    
         | 
| 
       7394 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 7811 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       7395 
7812 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLNumResultCols_helper, result_cols_args,
         
     | 
| 
       7396 
7813 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       7397 
7814 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -7484,7 +7901,7 @@ VALUE ibm_db_num_rows(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       7484 
7901 
     | 
    
         
             
                row_count_args->stmt_res  =  stmt_res;
         
     | 
| 
       7485 
7902 
     | 
    
         
             
                row_count_args->count     =  0;
         
     | 
| 
       7486 
7903 
     | 
    
         | 
| 
       7487 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 7904 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       7488 
7905 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLRowCount_helper, row_count_args,
         
     | 
| 
       7489 
7906 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       7490 
7907 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -7540,7 +7957,7 @@ static int _ruby_ibm_db_get_column_by_name(stmt_handle *stmt_res, VALUE column, 
     | 
|
| 
       7540 
7957 
     | 
    
         
             
              if ( stmt_res->column_info == NULL ) {
         
     | 
| 
       7541 
7958 
     | 
    
         
             
                if ( release_gil == 1 ) {
         
     | 
| 
       7542 
7959 
     | 
    
         | 
| 
       7543 
     | 
    
         
            -
                  #ifdef  
     | 
| 
      
 7960 
     | 
    
         
            +
                  #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       7544 
7961 
     | 
    
         
             
                    rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_get_result_set_info, stmt_res,
         
     | 
| 
       7545 
7962 
     | 
    
         
             
                                  (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       7546 
7963 
     | 
    
         
             
                  #else
         
     | 
| 
         @@ -7703,7 +8120,7 @@ VALUE ibm_db_field_display_size(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       7703 
8120 
     | 
    
         
             
                colattr_args->col_num         =  col+1;
         
     | 
| 
       7704 
8121 
     | 
    
         
             
                colattr_args->FieldIdentifier =  SQL_DESC_DISPLAY_SIZE;
         
     | 
| 
       7705 
8122 
     | 
    
         | 
| 
       7706 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 8123 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       7707 
8124 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLColAttributes_helper, colattr_args,
         
     | 
| 
       7708 
8125 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       7709 
8126 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -8023,7 +8440,7 @@ VALUE ibm_db_field_width(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       8023 
8440 
     | 
    
         
             
                colattr_args->col_num          =  col+1;
         
     | 
| 
       8024 
8441 
     | 
    
         
             
                colattr_args->FieldIdentifier  =  SQL_DESC_LENGTH;
         
     | 
| 
       8025 
8442 
     | 
    
         | 
| 
       8026 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 8443 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       8027 
8444 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLColAttributes_helper, colattr_args,
         
     | 
| 
       8028 
8445 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       8029 
8446 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -8129,7 +8546,7 @@ VALUE ibm_db_rollback(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       8129 
8546 
     | 
    
         
             
                end_X_args->handleType      =  SQL_HANDLE_DBC;
         
     | 
| 
       8130 
8547 
     | 
    
         
             
                end_X_args->completionType  =  SQL_ROLLBACK;    /*Remeber you are Rollingback the transaction*/
         
     | 
| 
       8131 
8548 
     | 
    
         | 
| 
       8132 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 8549 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       8133 
8550 
     | 
    
         
             
                  rc = rb_thread_blocking_region( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
         
     | 
| 
       8134 
8551 
     | 
    
         
             
                                 (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       8135 
8552 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -8710,7 +9127,7 @@ VALUE ibm_db_result(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       8710 
9127 
     | 
    
         
             
              if ( !NIL_P( stmt ) ) {
         
     | 
| 
       8711 
9128 
     | 
    
         
             
                Data_Get_Struct(stmt, stmt_handle, result_args->stmt_res);
         
     | 
| 
       8712 
9129 
     | 
    
         | 
| 
       8713 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 9130 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       8714 
9131 
     | 
    
         
             
                  ret_val = rb_thread_blocking_region( (void *)_ruby_ibm_db_result_helper, result_args,
         
     | 
| 
       8715 
9132 
     | 
    
         
             
                                      (void *)_ruby_ibm_db_Statement_level_UBF, result_args->stmt_res );
         
     | 
| 
       8716 
9133 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -9513,7 +9930,7 @@ VALUE ibm_db_fetch_row(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       9513 
9930 
     | 
    
         
             
              helper_args->arg_count   =  argc;
         
     | 
| 
       9514 
9931 
     | 
    
         
             
              helper_args->error       =  &error;
         
     | 
| 
       9515 
9932 
     | 
    
         | 
| 
       9516 
     | 
    
         
            -
              #ifdef  
     | 
| 
      
 9933 
     | 
    
         
            +
              #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       9517 
9934 
     | 
    
         
             
                ret_val = rb_thread_blocking_region( (void *)_ruby_ibm_db_fetch_row_helper, helper_args,
         
     | 
| 
       9518 
9935 
     | 
    
         
             
                                    (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       9519 
9936 
     | 
    
         
             
              #else
         
     | 
| 
         @@ -9586,7 +10003,7 @@ VALUE ibm_db_fetch_assoc(int argc, VALUE *argv, VALUE self) { 
     | 
|
| 
       9586 
10003 
     | 
    
         
             
              helper_args->error      =  &error;
         
     | 
| 
       9587 
10004 
     | 
    
         
             
              helper_args->funcType   =  FETCH_ASSOC;
         
     | 
| 
       9588 
10005 
     | 
    
         | 
| 
       9589 
     | 
    
         
            -
              #ifdef  
     | 
| 
      
 10006 
     | 
    
         
            +
              #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       9590 
10007 
     | 
    
         
             
                ret_val = rb_thread_blocking_region( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
         
     | 
| 
       9591 
10008 
     | 
    
         
             
                                    (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       9592 
10009 
     | 
    
         
             
              #else
         
     | 
| 
         @@ -9673,7 +10090,7 @@ VALUE ibm_db_fetch_object(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       9673 
10090 
     | 
    
         
             
              helper_args->error      =  &error;
         
     | 
| 
       9674 
10091 
     | 
    
         
             
              helper_args->funcType   =  FETCH_ASSOC;
         
     | 
| 
       9675 
10092 
     | 
    
         | 
| 
       9676 
     | 
    
         
            -
              #ifdef  
     | 
| 
      
 10093 
     | 
    
         
            +
              #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       9677 
10094 
     | 
    
         
             
                row_res->hash = rb_thread_blocking_region( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
         
     | 
| 
       9678 
10095 
     | 
    
         
             
                                          (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       9679 
10096 
     | 
    
         
             
              #else
         
     | 
| 
         @@ -9755,7 +10172,7 @@ VALUE ibm_db_fetch_array(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       9755 
10172 
     | 
    
         
             
              helper_args->error       =  &error;
         
     | 
| 
       9756 
10173 
     | 
    
         
             
              helper_args->funcType    =  FETCH_INDEX;
         
     | 
| 
       9757 
10174 
     | 
    
         | 
| 
       9758 
     | 
    
         
            -
              #ifdef  
     | 
| 
      
 10175 
     | 
    
         
            +
              #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       9759 
10176 
     | 
    
         
             
                ret_val = rb_thread_blocking_region( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
         
     | 
| 
       9760 
10177 
     | 
    
         
             
                                    (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       9761 
10178 
     | 
    
         
             
              #else
         
     | 
| 
         @@ -9831,7 +10248,7 @@ VALUE ibm_db_fetch_both(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       9831 
10248 
     | 
    
         
             
              helper_args->error       =  &error;
         
     | 
| 
       9832 
10249 
     | 
    
         
             
              helper_args->funcType    =  FETCH_BOTH;
         
     | 
| 
       9833 
10250 
     | 
    
         | 
| 
       9834 
     | 
    
         
            -
              #ifdef  
     | 
| 
      
 10251 
     | 
    
         
            +
              #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       9835 
10252 
     | 
    
         
             
                ret_val = rb_thread_blocking_region( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
         
     | 
| 
       9836 
10253 
     | 
    
         
             
                                    (void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
         
     | 
| 
       9837 
10254 
     | 
    
         
             
              #else
         
     | 
| 
         @@ -10582,7 +10999,7 @@ VALUE ibm_db_server_info(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       10582 
10999 
     | 
    
         
             
                getInfo_args->infoValue    =  NULL;
         
     | 
| 
       10583 
11000 
     | 
    
         
             
                getInfo_args->buff_length  =  0;
         
     | 
| 
       10584 
11001 
     | 
    
         | 
| 
       10585 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 11002 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       10586 
11003 
     | 
    
         
             
                  return_value  =  rb_thread_blocking_region( (void *)ibm_db_server_info_helper, getInfo_args,
         
     | 
| 
       10587 
11004 
     | 
    
         
             
                                             (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       10588 
11005 
     | 
    
         
             
                #else
         
     | 
| 
         @@ -10869,7 +11286,7 @@ VALUE ibm_db_client_info(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       10869 
11286 
     | 
    
         
             
                getInfo_args->infoValue    =  NULL;
         
     | 
| 
       10870 
11287 
     | 
    
         
             
                getInfo_args->buff_length  =  0;
         
     | 
| 
       10871 
11288 
     | 
    
         | 
| 
       10872 
     | 
    
         
            -
                #ifdef  
     | 
| 
      
 11289 
     | 
    
         
            +
                #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
       10873 
11290 
     | 
    
         
             
                  return_value = rb_thread_blocking_region( (void *)ibm_db_client_info_helper, getInfo_args,
         
     | 
| 
       10874 
11291 
     | 
    
         
             
                                           (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
         
     | 
| 
       10875 
11292 
     | 
    
         
             
                #else
         
     | 
    
        data/ext/ruby_ibm_db.h
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
       3 
3 
     | 
    
         
             
              |  Licensed Materials - Property of IBM                                |
         
     | 
| 
       4 
4 
     | 
    
         
             
              |                                                                      |
         
     | 
| 
       5 
     | 
    
         
            -
              | (C) Copyright IBM Corporation 2006, 2007, 2008, 2009, 2010 
     | 
| 
      
 5 
     | 
    
         
            +
              | (C) Copyright IBM Corporation 2006, 2007, 2008, 2009, 2010, 2012     |
         
     | 
| 
       6 
6 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
       7 
7 
     | 
    
         
             
              | Authors: Sushant Koduru, Lynh Nguyen, Kanchana Padmanabhan,          |
         
     | 
| 
       8 
8 
     | 
    
         
             
              |          Dan Scott, Helmut Tessarek, Kellen Bombardier, Sam Ruby     |
         
     | 
| 
         @@ -135,6 +135,9 @@ void Init_ibm_db(); 
     | 
|
| 
       135 
135 
     | 
    
         
             
            /* Function Declarations */
         
     | 
| 
       136 
136 
     | 
    
         | 
| 
       137 
137 
     | 
    
         
             
            VALUE ibm_db_connect(int argc, VALUE *argv, VALUE self);
         
     | 
| 
      
 138 
     | 
    
         
            +
            VALUE ibm_db_createDB(int argc, VALUE *argv, VALUE self);
         
     | 
| 
      
 139 
     | 
    
         
            +
            VALUE ibm_db_dropDB(int argc, VALUE *argv, VALUE self);
         
     | 
| 
      
 140 
     | 
    
         
            +
            VALUE ibm_db_createDBNX(int argc, VALUE *argv, VALUE self);
         
     | 
| 
       138 
141 
     | 
    
         
             
            VALUE ibm_db_commit(int argc, VALUE *argv, VALUE self);
         
     | 
| 
       139 
142 
     | 
    
         
             
            VALUE ibm_db_pconnect(int argc, VALUE *argv, VALUE self);
         
     | 
| 
       140 
143 
     | 
    
         
             
            VALUE ibm_db_autocommit(int argc, VALUE *argv, VALUE self);
         
     | 
    
        data/ext/ruby_ibm_db_cli.c
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
       3 
3 
     | 
    
         
             
              |  Licensed Materials - Property of IBM                                |
         
     | 
| 
       4 
4 
     | 
    
         
             
              |                                                                      |
         
     | 
| 
       5 
     | 
    
         
            -
              | (C) Copyright IBM Corporation 2009, 2010 
     | 
| 
      
 5 
     | 
    
         
            +
              | (C) Copyright IBM Corporation 2009, 2010, 2012                       |
         
     | 
| 
       6 
6 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
       7 
7 
     | 
    
         
             
              | Authors: Praveen Devarao                                             |
         
     | 
| 
       8 
8 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
         @@ -372,6 +372,113 @@ int _ruby_ibm_db_SQLExecDirect_helper(exec_cum_prepare_args *data) { 
     | 
|
| 
       372 
372 
     | 
    
         
             
              return rc;
         
     | 
| 
       373 
373 
     | 
    
         
             
            }
         
     | 
| 
       374 
374 
     | 
    
         | 
| 
      
 375 
     | 
    
         
            +
            /*
         
     | 
| 
      
 376 
     | 
    
         
            +
               This function calls SQLCreateDb cli call
         
     | 
| 
      
 377 
     | 
    
         
            +
            */
         
     | 
| 
      
 378 
     | 
    
         
            +
            int _ruby_ibm_db_SQLCreateDB_helper(create_drop_db_args *data) {
         
     | 
| 
      
 379 
     | 
    
         
            +
              int rc = 0;
         
     | 
| 
      
 380 
     | 
    
         
            +
            #ifndef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 381 
     | 
    
         
            +
              #ifdef _WIN32
         
     | 
| 
      
 382 
     | 
    
         
            +
                HINSTANCE cliLib = NULL;
         
     | 
| 
      
 383 
     | 
    
         
            +
                FARPROC sqlcreatedb;
         
     | 
| 
      
 384 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2 );
         
     | 
| 
      
 385 
     | 
    
         
            +
                sqlcreatedb =  DLSYM( cliLib, "SQLCreateDb" );
         
     | 
| 
      
 386 
     | 
    
         
            +
              #elif _AIX
         
     | 
| 
      
 387 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 388 
     | 
    
         
            +
                typedef int (*sqlcreatedbType)( SQLHDBC, SQLCHAR *, SQLINTEGER, SQLCHAR *, SQLINTEGER, SQLCHAR *, SQLINTEGER );
         
     | 
| 
      
 389 
     | 
    
         
            +
                sqlcreatedbType sqlcreatedb;
         
     | 
| 
      
 390 
     | 
    
         
            +
              /* On AIX CLI library is in archive. Hence we will need to specify flags in DLOPEN to load a member of the archive*/
         
     | 
| 
      
 391 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_MEMBER | RTLD_LAZY );
         
     | 
| 
      
 392 
     | 
    
         
            +
                sqlcreatedb = (sqlcreatedbType) DLSYM( cliLib, "SQLCreateDb" );
         
     | 
| 
      
 393 
     | 
    
         
            +
              #else
         
     | 
| 
      
 394 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 395 
     | 
    
         
            +
                typedef int (*sqlcreatedbType)( SQLHDBC, SQLCHAR *, SQLINTEGER, SQLCHAR *, SQLINTEGER, SQLCHAR *, SQLINTEGER );
         
     | 
| 
      
 396 
     | 
    
         
            +
                sqlcreatedbType sqlcreatedb;
         
     | 
| 
      
 397 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_LAZY );
         
     | 
| 
      
 398 
     | 
    
         
            +
                sqlcreatedb = (sqlcreatedbType) DLSYM( cliLib, "SQLCreateDb" );
         
     | 
| 
      
 399 
     | 
    
         
            +
              #endif
         
     | 
| 
      
 400 
     | 
    
         
            +
            #else
         
     | 
| 
      
 401 
     | 
    
         
            +
              #ifdef _WIN32
         
     | 
| 
      
 402 
     | 
    
         
            +
                HINSTANCE cliLib = NULL;
         
     | 
| 
      
 403 
     | 
    
         
            +
                FARPROC sqlcreatedb;
         
     | 
| 
      
 404 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2 );
         
     | 
| 
      
 405 
     | 
    
         
            +
                sqlcreatedb =  DLSYM( cliLib, "SQLCreateDbW" );
         
     | 
| 
      
 406 
     | 
    
         
            +
              #elif _AIX
         
     | 
| 
      
 407 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 408 
     | 
    
         
            +
                typedef int (*sqlcreatedbType)( SQLHDBC, SQLWCHAR *, SQLINTEGER, SQLWCHAR *, SQLINTEGER, SQLWCHAR *, SQLINTEGER );
         
     | 
| 
      
 409 
     | 
    
         
            +
                sqlcreatedbType sqlcreatedb;
         
     | 
| 
      
 410 
     | 
    
         
            +
              /* On AIX CLI library is in archive. Hence we will need to specify flags in DLOPEN to load a member of the archive*/
         
     | 
| 
      
 411 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_MEMBER | RTLD_LAZY );
         
     | 
| 
      
 412 
     | 
    
         
            +
                sqlcreatedb = (sqlcreatedbType) DLSYM( cliLib, "SQLCreateDbW" );
         
     | 
| 
      
 413 
     | 
    
         
            +
              #else
         
     | 
| 
      
 414 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 415 
     | 
    
         
            +
                typedef int (*sqlcreatedbType)( SQLHDBC, SQLWCHAR *, SQLINTEGER, SQLWCHAR *, SQLINTEGER, SQLWCHAR *, SQLINTEGER );
         
     | 
| 
      
 416 
     | 
    
         
            +
                sqlcreatedbType sqlcreatedb;
         
     | 
| 
      
 417 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_LAZY );
         
     | 
| 
      
 418 
     | 
    
         
            +
                sqlcreatedb = (sqlcreatedbType) DLSYM( cliLib, "SQLCreateDbW" );
         
     | 
| 
      
 419 
     | 
    
         
            +
              #endif
         
     | 
| 
      
 420 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 421 
     | 
    
         
            +
             
     | 
| 
      
 422 
     | 
    
         
            +
              rc = (*sqlcreatedb)( (SQLHSTMT) data->conn_res->hdbc, data->dbName, (SQLINTEGER)data->dbName_string_len, 
         
     | 
| 
      
 423 
     | 
    
         
            +
                                        data->codeSet, (SQLINTEGER)data->codeSet_string_len,
         
     | 
| 
      
 424 
     | 
    
         
            +
            							data->mode, (SQLINTEGER)data->mode_string_len );
         
     | 
| 
      
 425 
     | 
    
         
            +
              DLCLOSE( cliLib );
         
     | 
| 
      
 426 
     | 
    
         
            +
              return rc;
         
     | 
| 
      
 427 
     | 
    
         
            +
            }
         
     | 
| 
      
 428 
     | 
    
         
            +
             
     | 
| 
      
 429 
     | 
    
         
            +
            /*
         
     | 
| 
      
 430 
     | 
    
         
            +
               This function calls SQLDropDb cli call
         
     | 
| 
      
 431 
     | 
    
         
            +
            */
         
     | 
| 
      
 432 
     | 
    
         
            +
            int _ruby_ibm_db_SQLDropDB_helper(create_drop_db_args *data) {
         
     | 
| 
      
 433 
     | 
    
         
            +
              int rc = 0;
         
     | 
| 
      
 434 
     | 
    
         
            +
            #ifndef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 435 
     | 
    
         
            +
              #ifdef _WIN32
         
     | 
| 
      
 436 
     | 
    
         
            +
                HINSTANCE cliLib = NULL;
         
     | 
| 
      
 437 
     | 
    
         
            +
                FARPROC sqldropdb;
         
     | 
| 
      
 438 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2 );
         
     | 
| 
      
 439 
     | 
    
         
            +
                sqldropdb =  DLSYM( cliLib, "SQLDropDb" );
         
     | 
| 
      
 440 
     | 
    
         
            +
              #elif _AIX
         
     | 
| 
      
 441 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 442 
     | 
    
         
            +
                typedef int (*sqldropdbType)( SQLHDBC, SQLCHAR *, SQLINTEGER);
         
     | 
| 
      
 443 
     | 
    
         
            +
                sqldropdbType sqldropdb;
         
     | 
| 
      
 444 
     | 
    
         
            +
              /* On AIX CLI library is in archive. Hence we will need to specify flags in DLOPEN to load a member of the archive*/
         
     | 
| 
      
 445 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_MEMBER | RTLD_LAZY );
         
     | 
| 
      
 446 
     | 
    
         
            +
                sqldropdb = (sqldropdbType) DLSYM( cliLib, "SQLDropDb" );
         
     | 
| 
      
 447 
     | 
    
         
            +
              #else
         
     | 
| 
      
 448 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 449 
     | 
    
         
            +
                typedef int (*sqldropdbType)( SQLHDBC, SQLCHAR *, SQLINTEGER);
         
     | 
| 
      
 450 
     | 
    
         
            +
                sqldropdbType sqldropdb;
         
     | 
| 
      
 451 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_LAZY );
         
     | 
| 
      
 452 
     | 
    
         
            +
                sqldropdb = (sqldropdbType) DLSYM( cliLib, "SQLDropDb" );
         
     | 
| 
      
 453 
     | 
    
         
            +
              #endif
         
     | 
| 
      
 454 
     | 
    
         
            +
            #else
         
     | 
| 
      
 455 
     | 
    
         
            +
              #ifdef _WIN32
         
     | 
| 
      
 456 
     | 
    
         
            +
                HINSTANCE cliLib = NULL;
         
     | 
| 
      
 457 
     | 
    
         
            +
                FARPROC sqldropdb;
         
     | 
| 
      
 458 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2 );
         
     | 
| 
      
 459 
     | 
    
         
            +
                sqldropdb =  DLSYM( cliLib, "SQLDropDbW" );
         
     | 
| 
      
 460 
     | 
    
         
            +
              #elif _AIX
         
     | 
| 
      
 461 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 462 
     | 
    
         
            +
                typedef int (*sqldropdbType)( SQLHDBC, SQLWCHAR *, SQLINTEGER);
         
     | 
| 
      
 463 
     | 
    
         
            +
                sqldropdbType sqldropdb;
         
     | 
| 
      
 464 
     | 
    
         
            +
              /* On AIX CLI library is in archive. Hence we will need to specify flags in DLOPEN to load a member of the archive*/
         
     | 
| 
      
 465 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_MEMBER | RTLD_LAZY );
         
     | 
| 
      
 466 
     | 
    
         
            +
                sqldropdb = (sqldropdbType) DLSYM( cliLib, "SQLDropDbW" );
         
     | 
| 
      
 467 
     | 
    
         
            +
              #else
         
     | 
| 
      
 468 
     | 
    
         
            +
                void *cliLib = NULL;
         
     | 
| 
      
 469 
     | 
    
         
            +
                typedef int (*sqldropdbType)( SQLHDBC, SQLWCHAR *, SQLINTEGER);
         
     | 
| 
      
 470 
     | 
    
         
            +
                sqldropdbType sqldropdb;
         
     | 
| 
      
 471 
     | 
    
         
            +
                cliLib = DLOPEN( LIBDB2, RTLD_LAZY );
         
     | 
| 
      
 472 
     | 
    
         
            +
                sqldropdb = (sqldropdbType) DLSYM( cliLib, "SQLDropDbW" );
         
     | 
| 
      
 473 
     | 
    
         
            +
              #endif
         
     | 
| 
      
 474 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 475 
     | 
    
         
            +
             
     | 
| 
      
 476 
     | 
    
         
            +
              rc = (*sqldropdb)( (SQLHSTMT) data->conn_res->hdbc, data->dbName, (SQLINTEGER)data->dbName_string_len );
         
     | 
| 
      
 477 
     | 
    
         
            +
             
     | 
| 
      
 478 
     | 
    
         
            +
              DLCLOSE( cliLib );
         
     | 
| 
      
 479 
     | 
    
         
            +
              return rc;
         
     | 
| 
      
 480 
     | 
    
         
            +
            }
         
     | 
| 
      
 481 
     | 
    
         
            +
             
     | 
| 
       375 
482 
     | 
    
         
             
            /*
         
     | 
| 
       376 
483 
     | 
    
         
             
               This function calls SQLPrepare cli call to prepare the given statement
         
     | 
| 
       377 
484 
     | 
    
         
             
            */
         
     | 
    
        data/ext/ruby_ibm_db_cli.h
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
       3 
3 
     | 
    
         
             
              |  Licensed Materials - Property of IBM                                |
         
     | 
| 
       4 
4 
     | 
    
         
             
              |                                                                      |
         
     | 
| 
       5 
     | 
    
         
            -
              | (C) Copyright IBM Corporation 2009, 2010 
     | 
| 
      
 5 
     | 
    
         
            +
              | (C) Copyright IBM Corporation 2009, 2010, 2012                       |
         
     | 
| 
       6 
6 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
       7 
7 
     | 
    
         
             
              | Authors: Praveen Devarao                                             |
         
     | 
| 
       8 
8 
     | 
    
         
             
              +----------------------------------------------------------------------+
         
     | 
| 
         @@ -11,6 +11,35 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
            #ifndef RUBY_IBM_DB_CLI_H
         
     | 
| 
       12 
12 
     | 
    
         
             
            #define RUBY_IBM_DB_CLI_H
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
            #ifdef _WIN32
         
     | 
| 
      
 15 
     | 
    
         
            +
            #include <windows.h>
         
     | 
| 
      
 16 
     | 
    
         
            +
            #else
         
     | 
| 
      
 17 
     | 
    
         
            +
            #include <dlfcn.h>
         
     | 
| 
      
 18 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            #ifdef _WIN32
         
     | 
| 
      
 21 
     | 
    
         
            +
            #define DLOPEN LoadLibrary
         
     | 
| 
      
 22 
     | 
    
         
            +
            #define DLSYM GetProcAddress
         
     | 
| 
      
 23 
     | 
    
         
            +
            #define DLCLOSE FreeLibrary
         
     | 
| 
      
 24 
     | 
    
         
            +
            #define LIBDB2 "db2cli.dll"
         
     | 
| 
      
 25 
     | 
    
         
            +
            #elif _AIX
         
     | 
| 
      
 26 
     | 
    
         
            +
            #define DLOPEN dlopen
         
     | 
| 
      
 27 
     | 
    
         
            +
            #define DLSYM dlsym
         
     | 
| 
      
 28 
     | 
    
         
            +
            #define DLCLOSE dlclose
         
     | 
| 
      
 29 
     | 
    
         
            +
            #ifdef __64BIT__
         
     | 
| 
      
 30 
     | 
    
         
            +
            /*64-bit library in the archive libdb2.a*/
         
     | 
| 
      
 31 
     | 
    
         
            +
            #define LIBDB2 "libdb2.a(shr_64.o)"
         
     | 
| 
      
 32 
     | 
    
         
            +
            #else
         
     | 
| 
      
 33 
     | 
    
         
            +
            /*32-bit library in the archive libdb2.a*/
         
     | 
| 
      
 34 
     | 
    
         
            +
            #define LIBDB2 "libdb2.a(shr.o)"
         
     | 
| 
      
 35 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 36 
     | 
    
         
            +
            #else
         
     | 
| 
      
 37 
     | 
    
         
            +
            #define DLOPEN dlopen
         
     | 
| 
      
 38 
     | 
    
         
            +
            #define DLSYM dlsym
         
     | 
| 
      
 39 
     | 
    
         
            +
            #define DLCLOSE dlclose
         
     | 
| 
      
 40 
     | 
    
         
            +
            #define LIBDB2 "libdb2.so.1"
         
     | 
| 
      
 41 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       14 
43 
     | 
    
         
             
            #include <ruby.h>
         
     | 
| 
       15 
44 
     | 
    
         
             
            #include <stdio.h>
         
     | 
| 
       16 
45 
     | 
    
         
             
            #include <string.h>
         
     | 
| 
         @@ -54,6 +83,8 @@ typedef struct _conn_handle_struct { 
     | 
|
| 
       54 
83 
     | 
    
         
             
              SQLPOINTER   ruby_error_state;
         
     | 
| 
       55 
84 
     | 
    
         
             
              SQLSMALLINT  ruby_error_msg_len;
         
     | 
| 
       56 
85 
     | 
    
         | 
| 
      
 86 
     | 
    
         
            +
              SQLINTEGER   sqlcode;
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
       57 
88 
     | 
    
         
             
            } conn_handle;
         
     | 
| 
       58 
89 
     | 
    
         | 
| 
       59 
90 
     | 
    
         
             
            typedef union {
         
     | 
| 
         @@ -114,6 +145,7 @@ typedef struct _stmt_handle_struct { 
     | 
|
| 
       114 
145 
     | 
    
         
             
              SQLPOINTER   ruby_stmt_err_msg;
         
     | 
| 
       115 
146 
     | 
    
         
             
              SQLPOINTER   ruby_stmt_err_state;
         
     | 
| 
       116 
147 
     | 
    
         
             
              SQLSMALLINT  ruby_stmt_err_msg_len;
         
     | 
| 
      
 148 
     | 
    
         
            +
              SQLINTEGER   sqlcode;
         
     | 
| 
       117 
149 
     | 
    
         
             
            } stmt_handle;
         
     | 
| 
       118 
150 
     | 
    
         | 
| 
       119 
151 
     | 
    
         
             
            /* 
         
     | 
| 
         @@ -211,6 +243,25 @@ typedef struct _ibm_db_exec_direct_args_struct { 
     | 
|
| 
       211 
243 
     | 
    
         
             
              long          stmt_string_len;
         
     | 
| 
       212 
244 
     | 
    
         
             
            } exec_cum_prepare_args;
         
     | 
| 
       213 
245 
     | 
    
         | 
| 
      
 246 
     | 
    
         
            +
            /* 
         
     | 
| 
      
 247 
     | 
    
         
            +
                Structure holding the necessary info to be passed to SQLCreateDB and SQLDropDB CLI call
         
     | 
| 
      
 248 
     | 
    
         
            +
            */
         
     | 
| 
      
 249 
     | 
    
         
            +
            typedef struct _ibm_db_create_drop_db_args_struct {
         
     | 
| 
      
 250 
     | 
    
         
            +
              conn_handle   *conn_res;
         
     | 
| 
      
 251 
     | 
    
         
            +
            #ifdef UNICODE_SUPPORT_VERSION
         
     | 
| 
      
 252 
     | 
    
         
            +
              SQLWCHAR      *dbName;
         
     | 
| 
      
 253 
     | 
    
         
            +
              SQLWCHAR      *codeSet;
         
     | 
| 
      
 254 
     | 
    
         
            +
              SQLWCHAR      *mode;
         
     | 
| 
      
 255 
     | 
    
         
            +
            #else
         
     | 
| 
      
 256 
     | 
    
         
            +
              SQLCHAR       *dbName;
         
     | 
| 
      
 257 
     | 
    
         
            +
              SQLCHAR       *codeSet;
         
     | 
| 
      
 258 
     | 
    
         
            +
              SQLCHAR       *mode;
         
     | 
| 
      
 259 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 260 
     | 
    
         
            +
              long          dbName_string_len;
         
     | 
| 
      
 261 
     | 
    
         
            +
              long          codeSet_string_len;
         
     | 
| 
      
 262 
     | 
    
         
            +
              long          mode_string_len;
         
     | 
| 
      
 263 
     | 
    
         
            +
            } create_drop_db_args;
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
       214 
265 
     | 
    
         
             
            /* 
         
     | 
| 
       215 
266 
     | 
    
         
             
                Structure holding the necessary info to be passed to SQLParamData and SQLPutData CLI call
         
     | 
| 
       216 
267 
     | 
    
         
             
            */
         
     | 
| 
         @@ -427,5 +478,7 @@ int _ruby_ibm_db_SQLGetConnectAttr_helper(get_handle_attr_args *data); 
     | 
|
| 
       427 
478 
     | 
    
         
             
            int _ruby_ibm_db_SQLBindFileToParam_helper(stmt_handle *stmt_res, param_node *curr);
         
     | 
| 
       428 
479 
     | 
    
         
             
            int _ruby_ibm_db_SQLBindParameter_helper(bind_parameter_args *data);
         
     | 
| 
       429 
480 
     | 
    
         
             
            void _ruby_ibm_db_Statement_level_UBF(stmt_handle *stmt_res);
         
     | 
| 
      
 481 
     | 
    
         
            +
            int _ruby_ibm_db_SQLCreateDB_helper(create_drop_db_args *data);
         
     | 
| 
      
 482 
     | 
    
         
            +
            int _ruby_ibm_db_SQLDropDB_helper(create_drop_db_args *data);
         
     | 
| 
       430 
483 
     | 
    
         | 
| 
       431 
484 
     | 
    
         
             
            #endif  /* RUBY_IBM_DB_CLI_H */
         
     | 
| 
         @@ -117,24 +117,31 @@ module ActiveRecord 
     | 
|
| 
       117 
117 
     | 
    
         
             
                  # Flag to decide if quoted literal replcement should take place. By default it is ON. Set it to OFF if using Pstmt
         
     | 
| 
       118 
118 
     | 
    
         
             
                  set_quoted_literal_replacement = IBM_DB::QUOTED_LITERAL_REPLACEMENT_ON
         
     | 
| 
       119 
119 
     | 
    
         | 
| 
       120 
     | 
    
         
            -
                  # Retrieves the database alias (local catalog name) or remote name
         
     | 
| 
       121 
     | 
    
         
            -
                  # (for remote TCP/IP connections) from the +config+ hash
         
     | 
| 
       122 
     | 
    
         
            -
                  # or raises ArgumentError in case of failure.
         
     | 
| 
       123 
     | 
    
         
            -
                  if config.has_key?(:database)
         
     | 
| 
       124 
     | 
    
         
            -
                    database = config[:database].to_s
         
     | 
| 
       125 
     | 
    
         
            -
                  else
         
     | 
| 
       126 
     | 
    
         
            -
                    raise ArgumentError, "Missing argument: a database name needs to be specified."
         
     | 
| 
       127 
     | 
    
         
            -
                  end
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
120 
     | 
    
         
             
                  # Retrieves database user credentials from the +config+ hash
         
     | 
| 
       130 
121 
     | 
    
         
             
                  # or raises ArgumentError in case of failure.
         
     | 
| 
       131 
122 
     | 
    
         
             
                  if !config.has_key?(:username) || !config.has_key?(:password)
         
     | 
| 
       132 
123 
     | 
    
         
             
                    raise ArgumentError, "Missing argument(s): Username/Password for #{config[:database]} is not specified"
         
     | 
| 
       133 
124 
     | 
    
         
             
                  else
         
     | 
| 
      
 125 
     | 
    
         
            +
                    if(config[:username].to_s.nil? || config[:password].to_s.nil?)
         
     | 
| 
      
 126 
     | 
    
         
            +
                      raise ArgumentError, "Username/Password cannot be nil"
         
     | 
| 
      
 127 
     | 
    
         
            +
                    end
         
     | 
| 
       134 
128 
     | 
    
         
             
                    username = config[:username].to_s
         
     | 
| 
       135 
129 
     | 
    
         
             
                    password = config[:password].to_s
         
     | 
| 
       136 
130 
     | 
    
         
             
                  end
         
     | 
| 
       137 
131 
     | 
    
         | 
| 
      
 132 
     | 
    
         
            +
                  if(config.has_key?(:dbops) && config[:dbops] == true)
         
     | 
| 
      
 133 
     | 
    
         
            +
                    return ConnectionAdapters::IBM_DBAdapter.new(nil, logger, config, {})
         
     | 
| 
      
 134 
     | 
    
         
            +
                  end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                  # Retrieves the database alias (local catalog name) or remote name
         
     | 
| 
      
 137 
     | 
    
         
            +
                  # (for remote TCP/IP connections) from the +config+ hash
         
     | 
| 
      
 138 
     | 
    
         
            +
                  # or raises ArgumentError in case of failure.
         
     | 
| 
      
 139 
     | 
    
         
            +
                  if config.has_key?(:database)
         
     | 
| 
      
 140 
     | 
    
         
            +
                    database = config[:database].to_s
         
     | 
| 
      
 141 
     | 
    
         
            +
                  else
         
     | 
| 
      
 142 
     | 
    
         
            +
                    raise ArgumentError, "Missing argument: a database name needs to be specified."
         
     | 
| 
      
 143 
     | 
    
         
            +
                  end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
       138 
145 
     | 
    
         
             
                  # Providing default schema (username) when not specified
         
     | 
| 
       139 
146 
     | 
    
         
             
                  config[:schema] = config.has_key?(:schema) ? config[:schema].to_s : config[:username].to_s
         
     | 
| 
       140 
147 
     | 
    
         | 
| 
         @@ -232,8 +239,6 @@ module ActiveRecord 
     | 
|
| 
       232 
239 
     | 
    
         
             
                        :binary
         
     | 
| 
       233 
240 
     | 
    
         
             
                      when /smallint/i
         
     | 
| 
       234 
241 
     | 
    
         
             
                        :boolean
         
     | 
| 
       235 
     | 
    
         
            -
                      when /bigint/i
         
     | 
| 
       236 
     | 
    
         
            -
                        :bigint
         
     | 
| 
       237 
242 
     | 
    
         
             
                      when /int|serial/i
         
     | 
| 
       238 
243 
     | 
    
         
             
                        :integer
         
     | 
| 
       239 
244 
     | 
    
         
             
                      when /decimal|numeric|decfloat/i
         
     | 
| 
         @@ -652,6 +657,10 @@ module ActiveRecord 
     | 
|
| 
       652 
657 
     | 
    
         
             
                  # It connects to the database with the initially provided credentials
         
     | 
| 
       653 
658 
     | 
    
         
             
                  def connect
         
     | 
| 
       654 
659 
     | 
    
         
             
                    # If the type of connection is net based
         
     | 
| 
      
 660 
     | 
    
         
            +
                    if(@username.nil? || @password.nil?)
         
     | 
| 
      
 661 
     | 
    
         
            +
                      raise ArgumentError, "Username/Password cannot be nil"
         
     | 
| 
      
 662 
     | 
    
         
            +
                    end
         
     | 
| 
      
 663 
     | 
    
         
            +
             
     | 
| 
       655 
664 
     | 
    
         
             
                    begin
         
     | 
| 
       656 
665 
     | 
    
         
             
                      if @host
         
     | 
| 
       657 
666 
     | 
    
         
             
                        @conn_string = "DRIVER={IBM DB2 ODBC DRIVER};\
         
     | 
| 
         @@ -694,6 +703,7 @@ module ActiveRecord 
     | 
|
| 
       694 
703 
     | 
    
         
             
                    # * true if succesfull
         
     | 
| 
       695 
704 
     | 
    
         
             
                    # * false if the connection is already closed
         
     | 
| 
       696 
705 
     | 
    
         
             
                    # * nil if an error is raised
         
     | 
| 
      
 706 
     | 
    
         
            +
                    return nil if @connection.nil? || @connection == false
         
     | 
| 
       697 
707 
     | 
    
         
             
                    IBM_DB.close(@connection) rescue nil
         
     | 
| 
       698 
708 
     | 
    
         
             
                  end
         
     | 
| 
       699 
709 
     | 
    
         | 
| 
         @@ -1387,6 +1397,63 @@ module ActiveRecord 
     | 
|
| 
       1387 
1397 
     | 
    
         
             
                    }
         
     | 
| 
       1388 
1398 
     | 
    
         
             
                  end
         
     | 
| 
       1389 
1399 
     | 
    
         | 
| 
      
 1400 
     | 
    
         
            +
                  def build_conn_str_for_dbops()
         
     | 
| 
      
 1401 
     | 
    
         
            +
                    connect_str = "DRIVER={IBM DB2 ODBC DRIVER};ATTACH=true;"
         
     | 
| 
      
 1402 
     | 
    
         
            +
                    if(!@host.nil?)
         
     | 
| 
      
 1403 
     | 
    
         
            +
                      connect_str << "HOSTNAME=#{@host};"
         
     | 
| 
      
 1404 
     | 
    
         
            +
                      connect_str << "PORT=#{@port};"
         
     | 
| 
      
 1405 
     | 
    
         
            +
                      connect_str << "PROTOCOL=TCPIP;"
         
     | 
| 
      
 1406 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1407 
     | 
    
         
            +
                    connect_str << "UID=#{@username};PWD=#{@password};"
         
     | 
| 
      
 1408 
     | 
    
         
            +
                    return connect_str
         
     | 
| 
      
 1409 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1410 
     | 
    
         
            +
             
     | 
| 
      
 1411 
     | 
    
         
            +
                  def drop_database(dbName)
         
     | 
| 
      
 1412 
     | 
    
         
            +
                    connect_str = build_conn_str_for_dbops()
         
     | 
| 
      
 1413 
     | 
    
         
            +
             
     | 
| 
      
 1414 
     | 
    
         
            +
                    #Ensure connection is closed before trying to drop a database. 
         
     | 
| 
      
 1415 
     | 
    
         
            +
                    #As a connect call would have been made by call seeing connection in active
         
     | 
| 
      
 1416 
     | 
    
         
            +
                    disconnect!
         
     | 
| 
      
 1417 
     | 
    
         
            +
             
     | 
| 
      
 1418 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 1419 
     | 
    
         
            +
                      dropConn = IBM_DB.connect(connect_str, '', '')
         
     | 
| 
      
 1420 
     | 
    
         
            +
                    rescue StandardError => connect_err
         
     | 
| 
      
 1421 
     | 
    
         
            +
                      raise "Failed to connect to server due to: #{connect_err}"
         
     | 
| 
      
 1422 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1423 
     | 
    
         
            +
             
     | 
| 
      
 1424 
     | 
    
         
            +
                    if(IBM_DB.dropDB(dropConn,dbName))
         
     | 
| 
      
 1425 
     | 
    
         
            +
                      IBM_DB.close(dropConn)
         
     | 
| 
      
 1426 
     | 
    
         
            +
                      return true
         
     | 
| 
      
 1427 
     | 
    
         
            +
                    else
         
     | 
| 
      
 1428 
     | 
    
         
            +
                      error = IBM_DB.getErrormsg(dropConn, IBM_DB::DB_CONN)
         
     | 
| 
      
 1429 
     | 
    
         
            +
                      IBM_DB.close(dropConn)
         
     | 
| 
      
 1430 
     | 
    
         
            +
                      raise "Could not drop Database due to: #{error}"
         
     | 
| 
      
 1431 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1432 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1433 
     | 
    
         
            +
             
     | 
| 
      
 1434 
     | 
    
         
            +
                  def create_database(dbName, codeSet=nil, mode=nil)
         
     | 
| 
      
 1435 
     | 
    
         
            +
                    connect_str = build_conn_str_for_dbops()
         
     | 
| 
      
 1436 
     | 
    
         
            +
             
     | 
| 
      
 1437 
     | 
    
         
            +
                    #Ensure connection is closed before trying to drop a database.
         
     | 
| 
      
 1438 
     | 
    
         
            +
                    #As a connect call would have been made by call seeing connection in active
         
     | 
| 
      
 1439 
     | 
    
         
            +
                    disconnect!
         
     | 
| 
      
 1440 
     | 
    
         
            +
             
     | 
| 
      
 1441 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 1442 
     | 
    
         
            +
                      createConn = IBM_DB.connect(connect_str, '', '')
         
     | 
| 
      
 1443 
     | 
    
         
            +
                    rescue StandardError => connect_err
         
     | 
| 
      
 1444 
     | 
    
         
            +
                      raise "Failed to connect to server due to: #{connect_err}"
         
     | 
| 
      
 1445 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1446 
     | 
    
         
            +
             
     | 
| 
      
 1447 
     | 
    
         
            +
                    if(IBM_DB.createDB(createConn,dbName,codeSet,mode))
         
     | 
| 
      
 1448 
     | 
    
         
            +
                      IBM_DB.close(createConn)
         
     | 
| 
      
 1449 
     | 
    
         
            +
                      return true
         
     | 
| 
      
 1450 
     | 
    
         
            +
                    else
         
     | 
| 
      
 1451 
     | 
    
         
            +
                      error = IBM_DB.getErrormsg(createConn, IBM_DB::DB_CONN)
         
     | 
| 
      
 1452 
     | 
    
         
            +
                      IBM_DB.close(createConn)
         
     | 
| 
      
 1453 
     | 
    
         
            +
                      raise "Could not create Database due to: #{error}"
         
     | 
| 
      
 1454 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1455 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1456 
     | 
    
         
            +
             
     | 
| 
       1390 
1457 
     | 
    
         
             
                  # IBM data servers do not support limits on certain data types (unlike MySQL)
         
     | 
| 
       1391 
1458 
     | 
    
         
             
                  # Limit is supported for the {float, decimal, numeric, varchar, clob, blob, graphic, vargraphic} data types.
         
     | 
| 
       1392 
1459 
     | 
    
         
             
                  def type_to_sql(type, limit = nil, precision = nil, scale = nil)
         
     | 
    
        data/lib/mswin32/rb18x/ibm_db.so
    CHANGED
    
    | 
         Binary file 
     | 
| 
         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.9
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: x86-mswin32-60
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - IBM
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-01-03 00:00:00 +05:30
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -48,6 +48,7 @@ files: 
     | 
|
| 
       48 
48 
     | 
    
         
             
            - lib/IBM_DB.rb
         
     | 
| 
       49 
49 
     | 
    
         
             
            - lib/mswin32/ibm_db.rb
         
     | 
| 
       50 
50 
     | 
    
         
             
            - lib/mswin32/rb18x/ibm_db.so
         
     | 
| 
      
 51 
     | 
    
         
            +
            - lib/mswin32/rb19x/ibm_db.so
         
     | 
| 
       51 
52 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       52 
53 
     | 
    
         
             
            - MANIFEST
         
     | 
| 
       53 
54 
     | 
    
         
             
            - ParameterizedQueries README
         
     |