22 +----------------------------------------------------------------------+
33 | Licensed Materials - Property of IBM |
44 | |
5- | (C) Copyright IBM Corporation 2006 - 2017 |
5+ | (C) Copyright IBM Corporation 2006 - 2022 |
66 +----------------------------------------------------------------------+
77 | Authors: Sushant Koduru, Lynh Nguyen, Kanchana Padmanabhan, |
88 | Dan Scott, Helmut Tessarek, Sam Ruby, Kellen Bombardier, |
1212 +----------------------------------------------------------------------+
1313*/
1414
15- #define MODULE_RELEASE "3.0.5 "
15+ #define MODULE_RELEASE "3.0.6 "
1616
1717#ifdef HAVE_CONFIG_H
1818#include "config.h"
@@ -2885,7 +2885,7 @@ VALUE ruby_ibm_db_createDb_helper(VALUE connection, VALUE dbName, VALUE codeSet,
28852885 VALUE mode_utf16 = Qnil ;
28862886#endif
28872887
2888- int rc ;
2888+ RETCODE rc ;
28892889
28902890 create_drop_db_args * create_db_args = NULL ;
28912891 conn_handle * conn_res ;
@@ -3041,7 +3041,7 @@ VALUE ruby_ibm_db_dropDb_helper(VALUE connection, VALUE dbName) {
30413041
30423042 VALUE return_value = Qfalse ;
30433043
3044- int rc ;
3044+ RETCODE rc ;
30453045
30463046 create_drop_db_args * drop_db_args = NULL ;
30473047 conn_handle * conn_res = NULL ;
@@ -9549,8 +9549,6 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
95499549 case SQL_TYPE_DATE :
95509550 case SQL_TYPE_TIME :
95519551 case SQL_TYPE_TIMESTAMP :
9552- case SQL_BIGINT :
9553-
95549552 if ( op & FETCH_ASSOC ) {
95559553 rb_hash_aset (return_value , colName , rb_str_new2 ((char * )row_data -> str_val ));
95569554 }
@@ -9561,6 +9559,17 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
95619559 }
95629560 break ;
95639561
9562+ case SQL_BIGINT :
9563+ if ( op & FETCH_ASSOC ) {
9564+ rb_hash_aset (return_value , colName , LONG2NUM (atol ((char * )row_data -> str_val )));
9565+ }
9566+ if ( op == FETCH_INDEX ) {
9567+ rb_ary_store (return_value , i , LONG2NUM (atol ((char * )row_data -> str_val )));
9568+ } else if ( op == FETCH_BOTH ) {
9569+ rb_hash_aset (return_value , INT2NUM (i ), LONG2NUM (atol ((char * )row_data -> str_val )));
9570+ }
9571+ break ;
9572+
95649573 case SQL_DECIMAL :
95659574 case SQL_NUMERIC :
95669575 case SQL_DECFLOAT :
@@ -9572,22 +9581,36 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
95729581 return Qnil ;
95739582 }
95749583
9575- strcpy (tmpStr , "BigDecimal(\'" );
9576- strcat (tmpStr , row_data -> str_val );
9577- strcat (tmpStr , "\')" );
9584+ if ((atof (row_data -> str_val ) - atol (row_data -> str_val )) > 0 )
9585+ {
9586+ strcpy (tmpStr , "BigDecimal(\'" );
9587+ strcat (tmpStr , row_data -> str_val );
9588+ strcat (tmpStr , "\')" );
95789589
9579- if ( op & FETCH_ASSOC ) {
9580- rb_hash_aset (return_value , colName , rb_eval_string (tmpStr ));
9590+ if ( op & FETCH_ASSOC ) {
9591+ rb_hash_aset (return_value , colName , rb_eval_string (tmpStr ));
9592+ }
9593+ if ( op == FETCH_INDEX ) {
9594+ rb_ary_store (return_value , i , rb_eval_string (tmpStr ) );
9595+ } else if ( op == FETCH_BOTH ) {
9596+ rb_hash_aset ( return_value , INT2NUM (i ), rb_eval_string ( tmpStr ) );
9597+ }
9598+
9599+ ruby_xfree (tmpStr );
9600+ tmpStr = NULL ;
95819601 }
9582- if ( op == FETCH_INDEX ) {
9583- rb_ary_store (return_value , i , rb_eval_string (tmpStr ) );
9584- } else if ( op == FETCH_BOTH ) {
9585- rb_hash_aset ( return_value , INT2NUM (i ), rb_eval_string ( tmpStr ) );
9602+ else
9603+ {
9604+ if ( op & FETCH_ASSOC ) {
9605+ rb_hash_aset (return_value , colName , LONG2NUM (atol ((char * )row_data -> str_val )));
9606+ }
9607+ if ( op == FETCH_INDEX ) {
9608+ rb_ary_store (return_value , i , LONG2NUM (atol ((char * )row_data -> str_val )));
9609+ } else if ( op == FETCH_BOTH ) {
9610+ rb_hash_aset (return_value , INT2NUM (i ), LONG2NUM (atol ((char * )row_data -> str_val )));
9611+ }
95869612 }
95879613
9588- ruby_xfree (tmpStr );
9589- tmpStr = NULL ;
9590-
95919614 break ;
95929615 case SQL_SMALLINT :
95939616 if ( op & FETCH_ASSOC ) {
0 commit comments