ibm_db 2.5.26-x86-mingw32 → 2.5.27-x86-mingw32
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.
- checksums.yaml +4 -4
- data/CHANGES +5 -1
- data/README +1 -1
- data/ext/ibm_db.c +437 -351
- data/ext/ruby_ibm_db.h +241 -240
- data/ext/ruby_ibm_db_cli.c +32 -26
- data/ext/ruby_ibm_db_cli.h +15 -4
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +1 -0
- data/lib/mswin32/ibm_db.rb +2 -2
- data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfecc36c3cb45e37334de64860c57a31a9c3930a
|
4
|
+
data.tar.gz: 7b5e68da345fcf8fdc39584c6b0cc13b5762ff74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71b5b2a685bf8de7f6c7544d0fbb49045bd2782ded7652c9493386db1ba2725a60b8c9161acd1cd6597427472ec74b3d8a299e16282367f19053bd476d48719a
|
7
|
+
data.tar.gz: 836a6a17093660ad3c19ba8a9a090e9b25d96cb1eb606f041e71b197843017aa198036ae714d2962b80065a40bfa873527e2038e1493b03b8991b759721e5397
|
data/CHANGES
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
Change Log
|
2
2
|
==============
|
3
|
+
2015/06/08 (IBM_DB adapter 2.5.27, driver 2.5.27)
|
4
|
+
- Support for Ruby 2.2.x on Windows and Linux platform
|
5
|
+
- Fixed bug#28 Create table fails on db:migrate task in ActiveRecord 4.2.1 if database adapter not support foreign_keys.
|
6
|
+
|
3
7
|
2015/04/08 (IBM_DB adapter 2.5.26, driver 2.5.26)
|
4
8
|
- Fixed bug#22 - Error 'undefined method lookup_cast_type encountered' with rails version lesser than 4.2
|
5
9
|
|
6
10
|
2015/03/24 (IBM_DB adapter 2.5.25, driver 2.5.25)
|
7
11
|
- Support for Rails 4.2.x
|
8
|
-
- Support for Ruby 2.2.x on Windows and
|
12
|
+
- Support for Ruby 2.2.x on Windows and Linux platform
|
9
13
|
|
10
14
|
2014/08/03 (IBM_DB adapter 2.5.18, driver 2.5.14) :
|
11
15
|
- Support for Rails 4.1.x
|
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.27) and Driver (2.5.27) (2015/04/08)
|
3
3
|
For ActiveRecord Version >= 1.15.5 (and Rails >= 1.2.5)
|
4
4
|
=====================================================================
|
5
5
|
|
data/ext/ibm_db.c
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
+----------------------------------------------------------------------+
|
13
13
|
*/
|
14
14
|
|
15
|
-
#define MODULE_RELEASE "2.5.
|
15
|
+
#define MODULE_RELEASE "2.5.27"
|
16
16
|
|
17
17
|
#ifdef HAVE_CONFIG_H
|
18
18
|
#include "config.h"
|
@@ -57,6 +57,7 @@ typedef struct _stmt_bind_data_array {
|
|
57
57
|
SQLSMALLINT num;
|
58
58
|
int bind_params;
|
59
59
|
VALUE *error;
|
60
|
+
VALUE return_value;
|
60
61
|
}stmt_bind_array;
|
61
62
|
|
62
63
|
/*
|
@@ -69,7 +70,9 @@ typedef struct _ibm_db_connect_helper_args_struct {
|
|
69
70
|
VALUE *options;
|
70
71
|
VALUE *error;
|
71
72
|
int literal_replacement;
|
72
|
-
VALUE hKey;
|
73
|
+
VALUE hKey;
|
74
|
+
conn_handle *conn_res;
|
75
|
+
VALUE entry;
|
73
76
|
} connect_helper_args;
|
74
77
|
|
75
78
|
/*
|
@@ -79,6 +82,7 @@ typedef struct _ibm_db_result_args_struct {
|
|
79
82
|
stmt_handle *stmt_res;
|
80
83
|
VALUE column;
|
81
84
|
VALUE *error;
|
85
|
+
VALUE return_value;
|
82
86
|
} ibm_db_result_args;
|
83
87
|
|
84
88
|
/*
|
@@ -90,6 +94,7 @@ typedef struct _ibm_db_fetch_helper_struct {
|
|
90
94
|
int arg_count;
|
91
95
|
int funcType;
|
92
96
|
VALUE *error;
|
97
|
+
VALUE return_value;
|
93
98
|
} ibm_db_fetch_helper_args;
|
94
99
|
|
95
100
|
void ruby_init_ibm_db();
|
@@ -159,7 +164,6 @@ static VALUE id_id2name;
|
|
159
164
|
|
160
165
|
utf8_enc = rb_enc_find("UTF-8");
|
161
166
|
rbString = rb_external_str_new(str, strlen(str));
|
162
|
-
|
163
167
|
return rb_str_export_to_enc(rbString, utf8_enc);
|
164
168
|
}
|
165
169
|
|
@@ -171,7 +175,6 @@ static VALUE id_id2name;
|
|
171
175
|
} else {
|
172
176
|
utf16_enc = rb_enc_find("UTF-16LE");
|
173
177
|
}
|
174
|
-
|
175
178
|
return rb_external_str_new_with_enc((char *)str, len, utf16_enc);
|
176
179
|
}
|
177
180
|
|
@@ -179,7 +182,7 @@ static VALUE id_id2name;
|
|
179
182
|
VALUE rbString;
|
180
183
|
|
181
184
|
rbString = _ruby_ibm_db_export_sqlwchar_to_utf16_rstr( str, len ); /*Construct the Ruby string from SQLWCHAR(which is in utf16)*/
|
182
|
-
|
185
|
+
|
183
186
|
return _ruby_ibm_db_export_str_to_utf8(rbString); /*Convert the string to utf8 encoding*/
|
184
187
|
}
|
185
188
|
|
@@ -187,7 +190,7 @@ static VALUE id_id2name;
|
|
187
190
|
rb_encoding *utf8_enc;
|
188
191
|
|
189
192
|
utf8_enc = rb_enc_find("UTF-8");
|
190
|
-
|
193
|
+
|
191
194
|
return rb_external_str_new_with_enc((char *)str, len, utf8_enc);
|
192
195
|
}
|
193
196
|
#endif
|
@@ -195,6 +198,7 @@ static VALUE id_id2name;
|
|
195
198
|
/* Every user visible function must have an entry in Init_ibm_db
|
196
199
|
*/
|
197
200
|
void Init_ibm_db(void) {
|
201
|
+
|
198
202
|
mDB = rb_define_module("IBM_DB");
|
199
203
|
|
200
204
|
rb_define_module_function(mDB, "connect", ibm_db_connect, -1);
|
@@ -260,7 +264,7 @@ void Init_ibm_db(void) {
|
|
260
264
|
rb_define_module_function(mDB, "server_info", ibm_db_server_info, -1);
|
261
265
|
rb_define_module_function(mDB, "client_info", ibm_db_client_info, -1);
|
262
266
|
rb_define_module_function(mDB, "active", ibm_db_active, -1);
|
263
|
-
|
267
|
+
|
264
268
|
RUBY_FE(connect)
|
265
269
|
RUBY_FE(commit)
|
266
270
|
RUBY_FE(pconnect)
|
@@ -326,7 +330,7 @@ void Init_ibm_db(void) {
|
|
326
330
|
id_keys = rb_intern("keys");
|
327
331
|
id_new = rb_intern("new");
|
328
332
|
id_id2name = rb_intern("id2name");
|
329
|
-
|
333
|
+
|
330
334
|
};
|
331
335
|
/* */
|
332
336
|
|
@@ -341,7 +345,7 @@ static void ruby_ibm_db_load_necessary_libs() {
|
|
341
345
|
}
|
342
346
|
|
343
347
|
#ifdef _WIN32
|
344
|
-
static void ruby_ibm_db_check_sqlcreatedb(HINSTANCE cliLib) {
|
348
|
+
static void ruby_ibm_db_check_sqlcreatedb(HINSTANCE cliLib) {
|
345
349
|
FARPROC sqlcreatedb;
|
346
350
|
sqlcreatedb = DLSYM( cliLib, "SQLCreateDbW" );
|
347
351
|
#else
|
@@ -397,6 +401,7 @@ static void ruby_ibm_db_init_globals(struct _ibm_db_globals *ibm_db_globals)
|
|
397
401
|
memset(ibm_db_globals->__ruby_stmt_err_msg, '\0', DB2_MAX_ERR_MSG_LEN);
|
398
402
|
memset(ibm_db_globals->__ruby_conn_err_state, '\0', SQL_SQLSTATE_SIZE + 1);
|
399
403
|
memset(ibm_db_globals->__ruby_stmt_err_state, '\0', SQL_SQLSTATE_SIZE + 1);
|
404
|
+
|
400
405
|
}
|
401
406
|
/* */
|
402
407
|
|
@@ -481,11 +486,12 @@ static void _ruby_ibm_db_mark_conn_struct(conn_handle *handle)
|
|
481
486
|
/* static void _ruby_ibm_db_free_conn_struct */
|
482
487
|
static void _ruby_ibm_db_free_conn_struct(conn_handle *handle)
|
483
488
|
{
|
489
|
+
|
484
490
|
int rc;
|
485
491
|
end_tran_args *end_X_args;
|
486
492
|
|
487
493
|
if ( handle != NULL ) {
|
488
|
-
|
494
|
+
//Disconnect from DB. If stmt is allocated, it is freed automatically
|
489
495
|
if ( handle->handle_active ) {
|
490
496
|
if( handle->transaction_active == 1 && handle->auto_commit == 0 ) {
|
491
497
|
handle->transaction_active = 0;
|
@@ -494,14 +500,14 @@ static void _ruby_ibm_db_free_conn_struct(conn_handle *handle)
|
|
494
500
|
|
495
501
|
end_X_args->hdbc = &(handle->hdbc);
|
496
502
|
end_X_args->handleType = SQL_HANDLE_DBC;
|
497
|
-
end_X_args->completionType = SQL_ROLLBACK;
|
503
|
+
end_X_args->completionType = SQL_ROLLBACK; //Note we are rolling back the transaction
|
498
504
|
|
499
505
|
_ruby_ibm_db_SQLEndTran( end_X_args );
|
500
506
|
|
501
507
|
ruby_xfree( end_X_args );
|
502
508
|
|
503
509
|
}
|
504
|
-
|
510
|
+
rc = _ruby_ibm_db_SQLDisconnect_helper( &(handle->hdbc) );
|
505
511
|
rc = SQLFreeHandle(SQL_HANDLE_DBC, handle->hdbc );
|
506
512
|
rc = SQLFreeHandle(SQL_HANDLE_ENV, handle->henv );
|
507
513
|
}
|
@@ -516,14 +522,15 @@ static void _ruby_ibm_db_free_conn_struct(conn_handle *handle)
|
|
516
522
|
handle->ruby_error_state = NULL;
|
517
523
|
}
|
518
524
|
|
519
|
-
|
520
|
-
|
521
|
-
} else {
|
522
|
-
|
523
|
-
}
|
525
|
+
//if ( handle->flag_pconnect ) {
|
526
|
+
// ruby_xfree( handle );
|
527
|
+
//} else {
|
528
|
+
// ruby_xfree( handle );
|
529
|
+
//}
|
524
530
|
ruby_xfree( handle );
|
525
531
|
handle = NULL;
|
526
532
|
}
|
533
|
+
|
527
534
|
}
|
528
535
|
/* */
|
529
536
|
|
@@ -563,20 +570,18 @@ static void _ruby_ibm_db_free_result_struct(stmt_handle* handle)
|
|
563
570
|
{
|
564
571
|
int i;
|
565
572
|
param_node *curr_ptr = NULL, *prev_ptr = NULL;
|
573
|
+
|
566
574
|
|
567
575
|
if ( handle != NULL ) {
|
568
576
|
/* Free param cache list */
|
569
577
|
curr_ptr = handle->head_cache_list;
|
570
578
|
prev_ptr = handle->head_cache_list;
|
571
|
-
|
572
579
|
while ( curr_ptr != NULL ) {
|
573
580
|
curr_ptr = curr_ptr->next;
|
574
|
-
|
575
581
|
if ( prev_ptr->varname != NULL ) {
|
576
582
|
ruby_xfree( prev_ptr->varname );
|
577
583
|
prev_ptr->varname = NULL;
|
578
584
|
}
|
579
|
-
|
580
585
|
if ( prev_ptr->svalue != NULL ) {
|
581
586
|
ruby_xfree( prev_ptr->svalue );
|
582
587
|
prev_ptr->svalue = NULL;
|
@@ -588,7 +593,6 @@ static void _ruby_ibm_db_free_result_struct(stmt_handle* handle)
|
|
588
593
|
handle->head_cache_list = NULL;
|
589
594
|
handle->num_params = 0;
|
590
595
|
handle->current_node = NULL;
|
591
|
-
|
592
596
|
/* free row data cache */
|
593
597
|
if ( handle->row_data ) {
|
594
598
|
for (i=0; i<handle->num_columns;i++) {
|
@@ -620,7 +624,6 @@ static void _ruby_ibm_db_free_result_struct(stmt_handle* handle)
|
|
620
624
|
ruby_xfree( handle->row_data );
|
621
625
|
handle->row_data = NULL;
|
622
626
|
}
|
623
|
-
|
624
627
|
/* free column info cache */
|
625
628
|
if ( handle->column_info ) {
|
626
629
|
for (i=0; i<handle->num_columns; i++) {
|
@@ -682,26 +685,28 @@ static void _ruby_ibm_db_mark_stmt_struct(stmt_handle *handle)
|
|
682
685
|
}
|
683
686
|
|
684
687
|
|
685
|
-
//VALUE ibm_Ruby_Thread_Call(void *(*func)(void *), void *data1, rb_unblock_function_t *ubf, void *data2)
|
686
688
|
VALUE ibm_Ruby_Thread_Call(rb_blocking_function_t *func, void *data1, rb_unblock_function_t *ubf, void *data2)
|
687
|
-
|
688
|
-
#ifdef RUBY_API_VERSION_MAJOR
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
689
|
+
{
|
690
|
+
#ifdef RUBY_API_VERSION_MAJOR
|
691
|
+
if( RUBY_API_VERSION_MAJOR >=2 && RUBY_API_VERSION_MINOR >=2)
|
692
|
+
{
|
693
|
+
|
694
|
+
#ifdef _WIN32
|
695
|
+
void *(*f)(void*) = (void *(*)(void*))func;
|
696
|
+
return (VALUE)rb_thread_call_without_gvl(f, data1, ubf, data2);
|
697
|
+
#elif __APPLE__
|
698
|
+
return rb_thread_call_without_gvl(func, data1, ubf, data2);
|
699
|
+
#else
|
700
|
+
rb_thread_call_without_gvl(func, data1, ubf, data2);
|
701
|
+
#endif
|
702
|
+
}
|
703
|
+
else
|
704
|
+
{
|
705
|
+
rb_thread_call_without_gvl(func, data1, ubf, data2);
|
706
|
+
}
|
707
|
+
#else
|
695
708
|
rb_thread_call_without_gvl(func, data1, ubf, data2);
|
696
|
-
#endif
|
697
|
-
}
|
698
|
-
else
|
699
|
-
{
|
700
|
-
return rb_thread_blocking_region(func, data1, ubf, data2);
|
701
|
-
}
|
702
|
-
#else
|
703
|
-
return rb_thread_blocking_region(func, data1, ubf, data2);
|
704
|
-
#endif
|
709
|
+
#endif
|
705
710
|
}
|
706
711
|
|
707
712
|
|
@@ -712,7 +717,6 @@ static void _ruby_ibm_db_free_stmt_handle_and_resources(stmt_handle *handle)
|
|
712
717
|
{
|
713
718
|
int rc;
|
714
719
|
if ( handle != NULL ) {
|
715
|
-
|
716
720
|
if( !handle->is_freed ) {
|
717
721
|
rc = SQLFreeHandle( SQL_HANDLE_STMT, handle->hstmt );
|
718
722
|
|
@@ -722,7 +726,6 @@ static void _ruby_ibm_db_free_stmt_handle_and_resources(stmt_handle *handle)
|
|
722
726
|
ruby_xfree( handle->ruby_stmt_err_msg );
|
723
727
|
handle->ruby_stmt_err_msg = NULL;
|
724
728
|
}
|
725
|
-
|
726
729
|
if( handle->ruby_stmt_err_state != NULL ) {
|
727
730
|
ruby_xfree( handle->ruby_stmt_err_state );
|
728
731
|
handle->ruby_stmt_err_state = NULL;
|
@@ -736,12 +739,12 @@ static void _ruby_ibm_db_free_stmt_handle_and_resources(stmt_handle *handle)
|
|
736
739
|
|
737
740
|
/* static _ruby_ibm_db_free_stmt_struct */
|
738
741
|
static void _ruby_ibm_db_free_stmt_struct(stmt_handle *handle)
|
739
|
-
{
|
742
|
+
{
|
740
743
|
if ( handle != NULL ) {
|
741
744
|
_ruby_ibm_db_free_stmt_handle_and_resources( handle );
|
742
745
|
ruby_xfree( handle );
|
743
|
-
handle = NULL;
|
744
|
-
}
|
746
|
+
handle = NULL;
|
747
|
+
}
|
745
748
|
}
|
746
749
|
|
747
750
|
/* */
|
@@ -770,6 +773,7 @@ VALUE ibm_db_row_object(int argc, VALUE *argv, VALUE self)
|
|
770
773
|
*/
|
771
774
|
void ruby_init_ibm_db()
|
772
775
|
{
|
776
|
+
|
773
777
|
#ifndef _WIN32
|
774
778
|
/* Declare variables for DB2 instance settings */
|
775
779
|
char * tmp_name = NULL;
|
@@ -778,9 +782,9 @@ void ruby_init_ibm_db()
|
|
778
782
|
|
779
783
|
ibm_db_globals = ALLOC(struct _ibm_db_globals);
|
780
784
|
memset(ibm_db_globals, '\0', sizeof(struct _ibm_db_globals));
|
781
|
-
|
785
|
+
|
782
786
|
ruby_ibm_db_init_globals(ibm_db_globals);
|
783
|
-
|
787
|
+
|
784
788
|
/* Specifies that binary data shall be converted to a hexadecimal encoding and returned as an ASCII string */
|
785
789
|
rb_define_const(mDB, "BINARY", INT2NUM(1));
|
786
790
|
/* Specifies that binary data shall be converted to a hexadecimal encoding and returned as an ASCII string */
|
@@ -891,7 +895,7 @@ void ruby_init_ibm_db()
|
|
891
895
|
#endif
|
892
896
|
|
893
897
|
persistent_list = rb_hash_new();
|
894
|
-
|
898
|
+
|
895
899
|
le_conn_struct = rb_define_class_under(mDB, "Connection", rb_cObject);
|
896
900
|
le_pconn_struct = rb_define_class_under(mDB, "PConnection", rb_cObject);
|
897
901
|
le_stmt_struct = rb_define_class_under(mDB, "Statement", rb_cObject);
|
@@ -936,6 +940,7 @@ void ruby_init_ibm_db()
|
|
936
940
|
ruby_ibm_db_load_necessary_libs();
|
937
941
|
|
938
942
|
ruby_ibm_db_check_if_cli_func_supported();
|
943
|
+
|
939
944
|
}
|
940
945
|
/* */
|
941
946
|
|
@@ -1020,10 +1025,10 @@ static void _ruby_ibm_db_check_sql_errors( void *conn_or_stmt, int resourceType,
|
|
1020
1025
|
|
1021
1026
|
if( release_gil == 1 ){
|
1022
1027
|
|
1023
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
1024
|
-
|
1025
|
-
return_code = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLGetDiagRec_helper, get_DiagRec_args,
|
1028
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
1029
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLGetDiagRec_helper, get_DiagRec_args,
|
1026
1030
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
1031
|
+
return_code =get_DiagRec_args->return_code;
|
1027
1032
|
#else
|
1028
1033
|
return_code = _ruby_ibm_db_SQLGetDiagRec_helper( get_DiagRec_args );
|
1029
1034
|
#endif
|
@@ -1291,6 +1296,7 @@ static void _ruby_ibm_db_check_sql_errors( void *conn_or_stmt, int resourceType,
|
|
1291
1296
|
if( sqlstate != NULL ) {
|
1292
1297
|
ruby_xfree( sqlstate );
|
1293
1298
|
}
|
1299
|
+
|
1294
1300
|
}
|
1295
1301
|
/* */
|
1296
1302
|
|
@@ -1594,6 +1600,7 @@ static int _ruby_ibm_db_parse_options ( VALUE options, int type, void *handle, V
|
|
1594
1600
|
if( ret_val == Qfalse ){
|
1595
1601
|
return SQL_ERROR;
|
1596
1602
|
}
|
1603
|
+
|
1597
1604
|
return SQL_SUCCESS;
|
1598
1605
|
}
|
1599
1606
|
/* */
|
@@ -1626,6 +1633,7 @@ static int _ruby_ibm_db_get_result_set_info(stmt_handle *stmt_res)
|
|
1626
1633
|
_ruby_ibm_db_check_sql_errors( stmt_res, DB_STMT, (SQLHSTMT)stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1, NULL, NULL, -1, 1, 0 );
|
1627
1634
|
ruby_xfree( result_cols_args );
|
1628
1635
|
result_cols_args = NULL;
|
1636
|
+
stmt_res->rc = -1;
|
1629
1637
|
return -1;
|
1630
1638
|
}
|
1631
1639
|
stmt_res->num_columns = result_cols_args->count;
|
@@ -1666,6 +1674,7 @@ static int _ruby_ibm_db_get_result_set_info(stmt_handle *stmt_res)
|
|
1666
1674
|
result_cols_args = NULL;
|
1667
1675
|
describecolargs = NULL;
|
1668
1676
|
stmt_res->column_info = NULL;
|
1677
|
+
stmt_res->rc = -1;
|
1669
1678
|
return -1;
|
1670
1679
|
}
|
1671
1680
|
if ( describecolargs->name_length <= 0 ) {
|
@@ -1698,6 +1707,7 @@ static int _ruby_ibm_db_get_result_set_info(stmt_handle *stmt_res)
|
|
1698
1707
|
result_cols_args = NULL;
|
1699
1708
|
describecolargs = NULL;
|
1700
1709
|
stmt_res->column_info = NULL;
|
1710
|
+
stmt_res->rc = -1;
|
1701
1711
|
return -1;
|
1702
1712
|
}
|
1703
1713
|
} else {
|
@@ -1720,6 +1730,7 @@ static int _ruby_ibm_db_get_result_set_info(stmt_handle *stmt_res)
|
|
1720
1730
|
ruby_xfree( result_cols_args );
|
1721
1731
|
result_cols_args = NULL;
|
1722
1732
|
}
|
1733
|
+
stmt_res->rc = 0;
|
1723
1734
|
return 0;
|
1724
1735
|
}
|
1725
1736
|
/* */
|
@@ -1742,7 +1753,7 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res)
|
|
1742
1753
|
memset(bindCol_args,'\0',sizeof(struct _ibm_db_bind_col_struct));
|
1743
1754
|
|
1744
1755
|
bindCol_args->stmt_res = stmt_res;
|
1745
|
-
|
1756
|
+
|
1746
1757
|
for (i=0; i<stmt_res->num_columns; i++) {
|
1747
1758
|
column_type = stmt_res->column_info[i].type;
|
1748
1759
|
row_data = &stmt_res->row_data[i].data;
|
@@ -1788,7 +1799,6 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res)
|
|
1788
1799
|
bindCol_args->out_length = (SQLLEN *) (&stmt_res->row_data[i].out_length);
|
1789
1800
|
|
1790
1801
|
rc = _ruby_ibm_db_SQLBindCol_helper( bindCol_args );
|
1791
|
-
|
1792
1802
|
if ( rc == SQL_ERROR ) {
|
1793
1803
|
_ruby_ibm_db_check_sql_errors( stmt_res, DB_STMT, (SQLHSTMT)stmt_res->hstmt, SQL_HANDLE_STMT,
|
1794
1804
|
rc, 1, NULL, NULL, -1, 1, 0 );
|
@@ -1949,7 +1959,7 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res)
|
|
1949
1959
|
bindCol_args->buff_length = 4;
|
1950
1960
|
bindCol_args->TargetValuePtr = &stmt_res->column_info[i].lob_loc;
|
1951
1961
|
bindCol_args->out_length = &stmt_res->column_info[i].loc_ind;
|
1952
|
-
|
1962
|
+
|
1953
1963
|
rc = _ruby_ibm_db_SQLBindCol_helper( bindCol_args );
|
1954
1964
|
|
1955
1965
|
if ( rc == SQL_ERROR ) {
|
@@ -1971,12 +1981,12 @@ static int _ruby_ibm_db_bind_column_helper(stmt_handle *stmt_res)
|
|
1971
1981
|
bindCol_args->TargetValuePtr = NULL;
|
1972
1982
|
bindCol_args->out_length = NULL;
|
1973
1983
|
}
|
1974
|
-
|
1975
1984
|
/*Free Any Memory Allocated*/
|
1976
1985
|
if ( bindCol_args != NULL ) {
|
1977
1986
|
ruby_xfree( bindCol_args );
|
1978
1987
|
bindCol_args = NULL;
|
1979
1988
|
}
|
1989
|
+
|
1980
1990
|
return rc;
|
1981
1991
|
}
|
1982
1992
|
/* */
|
@@ -2021,6 +2031,7 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2021
2031
|
get_handle_attr_args *get_handleAttr_args = NULL;
|
2022
2032
|
|
2023
2033
|
conn_alive = 1;
|
2034
|
+
|
2024
2035
|
|
2025
2036
|
handleAttr_args = ALLOC( set_handle_attr_args );
|
2026
2037
|
memset(handleAttr_args,'\0',sizeof(struct _ibm_db_set_handle_attr_struct));
|
@@ -2028,8 +2039,7 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2028
2039
|
do {
|
2029
2040
|
/* Check if we already have a connection for this userID & database combination */
|
2030
2041
|
if ( isPersistent ) {
|
2031
|
-
|
2032
|
-
if ( !NIL_P(entry = rb_hash_aref(persistent_list, data->hKey)) ) {
|
2042
|
+
if ( !NIL_P(entry = rb_hash_aref(persistent_list, data->hKey)) ) {
|
2033
2043
|
Data_Get_Struct(entry, conn_handle, conn_res);
|
2034
2044
|
#ifndef PASE /* i5/OS server mode is persistant */
|
2035
2045
|
/* Need to reinitialize connection? */
|
@@ -2041,9 +2051,9 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2041
2051
|
get_handleAttr_args->valuePtr = (SQLPOINTER)&conn_alive;
|
2042
2052
|
get_handleAttr_args->buff_length = 0;
|
2043
2053
|
get_handleAttr_args->out_length = NULL;
|
2044
|
-
|
2054
|
+
|
2045
2055
|
rc = _ruby_ibm_db_SQLGetConnectAttr_helper( get_handleAttr_args );
|
2046
|
-
|
2056
|
+
|
2047
2057
|
ruby_xfree( get_handleAttr_args );
|
2048
2058
|
get_handleAttr_args = NULL;
|
2049
2059
|
|
@@ -2057,12 +2067,10 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2057
2067
|
} else {
|
2058
2068
|
/* Need to check for max pconnections? */
|
2059
2069
|
}
|
2060
|
-
|
2061
2070
|
if ( conn_res == NULL ) {
|
2062
2071
|
conn_res = ALLOC(conn_handle);
|
2063
2072
|
memset(conn_res, '\0', sizeof(conn_handle));
|
2064
2073
|
}
|
2065
|
-
|
2066
2074
|
/* handle not active as of yet */
|
2067
2075
|
conn_res->handle_active = 0;
|
2068
2076
|
|
@@ -2098,10 +2106,8 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2098
2106
|
return Qnil;
|
2099
2107
|
break;
|
2100
2108
|
}
|
2101
|
-
|
2102
2109
|
handleAttr_args->handle = &( conn_res->henv );
|
2103
2110
|
handleAttr_args->strLength = 0;
|
2104
|
-
|
2105
2111
|
#ifndef PASE /* i5/OS server mode */
|
2106
2112
|
handleAttr_args->attribute = SQL_ATTR_ODBC_VERSION;
|
2107
2113
|
handleAttr_args->valuePtr = (void *) SQL_OV_ODBC3;
|
@@ -2110,7 +2116,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2110
2116
|
handleAttr_args->attribute = SQL_ATTR_SERVER_MODE;
|
2111
2117
|
handleAttr_args->valuePtr = &attr;
|
2112
2118
|
#endif /* PASE */
|
2113
|
-
|
2114
2119
|
rc = _ruby_ibm_db_SQLSetEnvAttr_helper( handleAttr_args );
|
2115
2120
|
|
2116
2121
|
if (rc != SQL_SUCCESS) {
|
@@ -2138,7 +2143,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2138
2143
|
break;
|
2139
2144
|
}
|
2140
2145
|
}
|
2141
|
-
|
2142
2146
|
if (! reused) {
|
2143
2147
|
/* Alloc CONNECT Handle */
|
2144
2148
|
rc = SQLAllocHandle( SQL_HANDLE_DBC, conn_res->henv, &(conn_res->hdbc) );
|
@@ -2166,7 +2170,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2166
2170
|
break;
|
2167
2171
|
}
|
2168
2172
|
}
|
2169
|
-
|
2170
2173
|
handleAttr_args->handle = &(conn_res->hdbc);
|
2171
2174
|
handleAttr_args->strLength = SQL_NTS;
|
2172
2175
|
handleAttr_args->attribute = SQL_ATTR_AUTOCOMMIT;
|
@@ -2178,13 +2181,11 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2178
2181
|
handleAttr_args->valuePtr = (SQLPOINTER)(conn_res->auto_commit);
|
2179
2182
|
|
2180
2183
|
rc = _ruby_ibm_db_SQLSetConnectAttr_helper( handleAttr_args );
|
2181
|
-
|
2182
2184
|
#else
|
2183
2185
|
conn_res->auto_commit = SQL_AUTOCOMMIT_ON;
|
2184
2186
|
handleAttr_args->valuePtr = (SQLPOINTER)(&conn_res->auto_commit);
|
2185
2187
|
|
2186
2188
|
rc = _ruby_ibm_db_SQLSetConnectAttr_helper( handleAttr_args );
|
2187
|
-
|
2188
2189
|
if (!IBM_DB_G(i5_allow_commit)) {
|
2189
2190
|
if (!rc) {
|
2190
2191
|
SQLINTEGER nocommitpase = SQL_TXN_NO_COMMIT;
|
@@ -2197,7 +2198,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2197
2198
|
}
|
2198
2199
|
}
|
2199
2200
|
#endif
|
2200
|
-
|
2201
2201
|
conn_res->c_bin_mode = IBM_DB_G(bin_mode);
|
2202
2202
|
conn_res->c_case_mode = CASE_NATURAL;
|
2203
2203
|
conn_res->c_cursor_type = SQL_SCROLL_FORWARD_ONLY;
|
@@ -2211,7 +2211,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2211
2211
|
conn_res->errorType = 1;
|
2212
2212
|
|
2213
2213
|
conn_res->transaction_active = 0; /*No transaction is active*/
|
2214
|
-
|
2215
2214
|
/* Set Options */
|
2216
2215
|
if ( !NIL_P(*options) ) {
|
2217
2216
|
rc = _ruby_ibm_db_parse_options( *options, SQL_HANDLE_DBC, conn_res, error );
|
@@ -2224,12 +2223,10 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2224
2223
|
return Qnil;
|
2225
2224
|
}
|
2226
2225
|
}
|
2227
|
-
|
2228
2226
|
if (! reused) {
|
2229
2227
|
conn_args->hdbc = &(conn_res->hdbc);
|
2230
2228
|
|
2231
2229
|
rc = _ruby_ibm_db_SQLConnect_helper( conn_args );
|
2232
|
-
|
2233
2230
|
if ( rc == SQL_ERROR ) {
|
2234
2231
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
2235
2232
|
SQLFreeHandle( SQL_HANDLE_DBC, conn_res->hdbc );
|
@@ -2244,38 +2241,33 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2244
2241
|
} else {
|
2245
2242
|
#ifdef UNICODE_SUPPORT_VERSION
|
2246
2243
|
*error = _ruby_ibm_db_export_char_to_utf8_rstr("Connection failed: <error message could not be retrieved>");
|
2247
|
-
#else
|
2244
|
+
#else
|
2248
2245
|
*error = rb_str_new2("Connection failed: <error message could not be retrieved>");
|
2249
2246
|
#endif
|
2250
2247
|
}
|
2251
2248
|
ruby_xfree( handleAttr_args );
|
2252
|
-
handleAttr_args = NULL;
|
2253
|
-
_ruby_ibm_db_free_conn_struct( conn_res );
|
2249
|
+
handleAttr_args = NULL;
|
2250
|
+
_ruby_ibm_db_free_conn_struct( conn_res );
|
2254
2251
|
return Qnil;
|
2255
|
-
}
|
2256
|
-
|
2252
|
+
}
|
2257
2253
|
/* Get the AUTOCOMMIT state from the CLI driver as cli driver could have changed autocommit status based on it's precedence */
|
2258
2254
|
get_handleAttr_args = ALLOC( get_handle_attr_args );
|
2259
2255
|
memset(get_handleAttr_args,'\0',sizeof(struct _ibm_db_get_handle_attr_struct));
|
2260
|
-
|
2256
|
+
|
2261
2257
|
get_handleAttr_args->handle = &( conn_res->hdbc );
|
2262
2258
|
get_handleAttr_args->attribute = SQL_ATTR_AUTOCOMMIT;
|
2263
|
-
get_handleAttr_args->valuePtr = (SQLPOINTER)(&conn_res->auto_commit);
|
2259
|
+
get_handleAttr_args->valuePtr = (SQLPOINTER)(&conn_res->auto_commit);
|
2264
2260
|
get_handleAttr_args->buff_length = 0;
|
2265
|
-
get_handleAttr_args->out_length = NULL;
|
2266
|
-
|
2267
|
-
rc = _ruby_ibm_db_SQLGetConnectAttr_helper( get_handleAttr_args );
|
2268
|
-
|
2261
|
+
get_handleAttr_args->out_length = NULL;
|
2262
|
+
rc = _ruby_ibm_db_SQLGetConnectAttr_helper( get_handleAttr_args );
|
2269
2263
|
ruby_xfree( get_handleAttr_args );
|
2270
2264
|
get_handleAttr_args = NULL;
|
2271
|
-
|
2272
2265
|
if ( rc == SQL_ERROR ) {
|
2273
2266
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
2274
|
-
|
2267
|
+
rc = _ruby_ibm_db_SQLDisconnect_helper( &(conn_res->hdbc) );
|
2275
2268
|
SQLFreeHandle( SQL_HANDLE_DBC, conn_res->hdbc );
|
2276
|
-
SQLFreeHandle( SQL_HANDLE_ENV, conn_res->henv );
|
2277
|
-
if( conn_res != NULL && conn_res->ruby_error_msg != NULL ) {
|
2278
|
-
|
2269
|
+
SQLFreeHandle( SQL_HANDLE_ENV, conn_res->henv );
|
2270
|
+
if( conn_res != NULL && conn_res->ruby_error_msg != NULL ) {
|
2279
2271
|
#ifdef UNICODE_SUPPORT_VERSION
|
2280
2272
|
*error = rb_str_concat( _ruby_ibm_db_export_char_to_utf8_rstr("Failed to retrieve autocommit status during connection: "),
|
2281
2273
|
_ruby_ibm_db_export_sqlwchar_to_utf8_rstr(conn_res->ruby_error_msg, conn_res->ruby_error_msg_len));
|
@@ -2295,7 +2287,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2295
2287
|
return Qnil;
|
2296
2288
|
|
2297
2289
|
}
|
2298
|
-
|
2299
2290
|
#ifdef CLI_DBC_SERVER_TYPE_DB2LUW
|
2300
2291
|
#ifdef SQL_ATTR_DECFLOAT_ROUNDING_MODE
|
2301
2292
|
|
@@ -2307,7 +2298,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2307
2298
|
|
2308
2299
|
#endif
|
2309
2300
|
#endif
|
2310
|
-
|
2311
2301
|
/* Get the server name */
|
2312
2302
|
#ifdef UNICODE_SUPPORT_VERSION
|
2313
2303
|
server = ALLOC_N(SQLWCHAR, 2048);
|
@@ -2318,20 +2308,18 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2318
2308
|
server = ALLOC_N(SQLCHAR, 2048);
|
2319
2309
|
memset(server, 0, sizeof(server));
|
2320
2310
|
#endif
|
2321
|
-
|
2322
2311
|
getInfo_args = ALLOC( get_info_args );
|
2323
2312
|
memset(getInfo_args,'\0',sizeof(struct _ibm_db_get_info_struct));
|
2324
|
-
|
2325
2313
|
getInfo_args->conn_res = conn_res;
|
2326
2314
|
getInfo_args->out_length = &out_length;
|
2327
2315
|
getInfo_args->infoType = SQL_DBMS_NAME;
|
2328
2316
|
getInfo_args->infoValue = (SQLPOINTER)server;
|
2317
|
+
|
2329
2318
|
#ifdef UNICODE_SUPPORT_VERSION
|
2330
2319
|
getInfo_args->buff_length = 2048 * sizeof(SQLWCHAR);
|
2331
2320
|
#else
|
2332
2321
|
getInfo_args->buff_length = 2048;
|
2333
2322
|
#endif
|
2334
|
-
|
2335
2323
|
rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
|
2336
2324
|
|
2337
2325
|
#ifndef UNICODE_SUPPORT_VERSION
|
@@ -2350,12 +2338,10 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2350
2338
|
is_informix = 1;
|
2351
2339
|
}
|
2352
2340
|
#endif
|
2353
|
-
|
2354
2341
|
ruby_xfree( getInfo_args );
|
2355
2342
|
ruby_xfree( server );
|
2356
2343
|
getInfo_args = NULL;
|
2357
2344
|
server = NULL;
|
2358
|
-
|
2359
2345
|
rc = SQL_SUCCESS; /*Setting rc to SQL_SUCCESS, because the below block may or may not be executed*/
|
2360
2346
|
|
2361
2347
|
/* Set SQL_ATTR_REPLACE_QUOTED_LITERALS connection attribute to
|
@@ -2372,7 +2358,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2372
2358
|
handleAttr_args->strLength = SQL_IS_INTEGER;
|
2373
2359
|
handleAttr_args->attribute = SQL_ATTR_REPLACE_QUOTED_LITERALS;
|
2374
2360
|
handleAttr_args->valuePtr = (SQLPOINTER)(enable_numeric_literals);
|
2375
|
-
|
2376
2361
|
rc = _ruby_ibm_db_SQLSetConnectAttr_helper( handleAttr_args );
|
2377
2362
|
if (rc != SQL_SUCCESS) {
|
2378
2363
|
handleAttr_args->attribute = SQL_ATTR_REPLACE_QUOTED_LITERALS_OLDVALUE;
|
@@ -2386,7 +2371,6 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2386
2371
|
handleAttr_args->strLength = SQL_IS_INTEGER;
|
2387
2372
|
handleAttr_args->attribute = SQL_ATTR_REPLACE_QUOTED_LITERALS;
|
2388
2373
|
handleAttr_args->valuePtr = (SQLPOINTER)(&enable_numeric_literals);
|
2389
|
-
|
2390
2374
|
rc = _ruby_ibm_db_SQLSetConnectAttr_helper( handleAttr_args );
|
2391
2375
|
if (rc != SQL_SUCCESS) {
|
2392
2376
|
handleAttr_args->attribute = SQL_ATTR_REPLACE_QUOTED_LITERALS_OLDVALUE;
|
@@ -2400,46 +2384,52 @@ static VALUE _ruby_ibm_db_connect_helper2( connect_helper_args *data ) {
|
|
2400
2384
|
}
|
2401
2385
|
conn_res->handle_active = 1;
|
2402
2386
|
} while (0);
|
2403
|
-
|
2404
2387
|
if( handleAttr_args != NULL ) {
|
2405
2388
|
ruby_xfree( handleAttr_args );
|
2406
2389
|
handleAttr_args = NULL;
|
2407
2390
|
}
|
2408
|
-
|
2409
|
-
|
2410
|
-
|
2391
|
+
if (data->hKey != Qnil)
|
2392
|
+
{
|
2393
|
+
//data->conn_res = conn_res;
|
2394
|
+
if (! reused && rc == SQL_SUCCESS)
|
2395
|
+
{
|
2411
2396
|
/* If we created a new persistent connection, add it to the persistent_list */
|
2412
2397
|
entry = Data_Wrap_Struct(le_pconn_struct,
|
2413
|
-
_ruby_ibm_db_mark_pconn_struct, _ruby_ibm_db_free_pconn_struct,
|
2398
|
+
_ruby_ibm_db_mark_pconn_struct, _ruby_ibm_db_free_pconn_struct,
|
2414
2399
|
conn_res);
|
2400
|
+
//data->entry = entry;
|
2415
2401
|
rb_hash_aset(persistent_list, data->hKey, entry);
|
2416
2402
|
}
|
2403
|
+
data->entry = entry;
|
2417
2404
|
}
|
2418
|
-
|
2419
2405
|
if ( rc < SQL_SUCCESS ) {
|
2420
2406
|
if (conn_res != NULL && conn_res->handle_active) {
|
2421
2407
|
rc = SQLFreeHandle( SQL_HANDLE_DBC, conn_res->hdbc);
|
2422
2408
|
rc = SQLFreeHandle(SQL_HANDLE_ENV, conn_res->henv );
|
2423
2409
|
}
|
2424
|
-
|
2425
2410
|
/* free memory */
|
2426
2411
|
if (conn_res != NULL) {
|
2427
2412
|
conn_res->handle_active = 0;
|
2428
2413
|
_ruby_ibm_db_free_conn_struct(conn_res);
|
2429
2414
|
}
|
2430
|
-
|
2431
2415
|
return Qfalse;
|
2432
2416
|
} else if (!NIL_P(entry)) {
|
2433
|
-
|
2417
|
+
//data->conn_res = conn_res;
|
2418
|
+
return entry;
|
2434
2419
|
} else if (isPersistent) {
|
2435
|
-
|
2420
|
+
//data->conn_res = conn_res;
|
2421
|
+
entry = Data_Wrap_Struct(le_pconn_struct,
|
2436
2422
|
_ruby_ibm_db_mark_pconn_struct, _ruby_ibm_db_free_pconn_struct,
|
2437
2423
|
conn_res);
|
2424
|
+
data->entry = entry;
|
2438
2425
|
} else {
|
2439
|
-
|
2440
|
-
|
2441
|
-
|
2426
|
+
data->conn_res = conn_res;
|
2427
|
+
/* return Data_Wrap_Struct(le_conn_struct,
|
2428
|
+
_ruby_ibm_db_mark_conn_struct, _ruby_ibm_db_free_conn_struct,
|
2429
|
+
conn_res);
|
2430
|
+
*/
|
2442
2431
|
}
|
2432
|
+
|
2443
2433
|
}
|
2444
2434
|
|
2445
2435
|
/* */
|
@@ -2450,7 +2440,8 @@ static VALUE _ruby_ibm_db_connect_helper( int argc, VALUE *argv, int isPersisten
|
|
2450
2440
|
{
|
2451
2441
|
connect_args *conn_args = NULL;
|
2452
2442
|
connect_helper_args *helper_args = NULL;
|
2453
|
-
|
2443
|
+
conn_handle *conn_res = NULL;
|
2444
|
+
|
2454
2445
|
VALUE r_db, r_uid, r_passwd, options,return_value;
|
2455
2446
|
VALUE r_literal_replacement = Qnil;
|
2456
2447
|
|
@@ -2459,36 +2450,37 @@ static VALUE _ruby_ibm_db_connect_helper( int argc, VALUE *argv, int isPersisten
|
|
2459
2450
|
#endif
|
2460
2451
|
|
2461
2452
|
VALUE error = Qnil;
|
2462
|
-
|
2453
|
+
|
2454
|
+
|
2463
2455
|
rb_scan_args(argc, argv, "32", &r_db, &r_uid, &r_passwd, &options, &r_literal_replacement );
|
2464
2456
|
|
2465
2457
|
/* Allocate the mwmory for necessary components */
|
2466
2458
|
|
2467
2459
|
conn_args = ALLOC( connect_args );
|
2468
2460
|
memset(conn_args,'\0',sizeof(struct _ibm_db_connect_args_struct));
|
2469
|
-
|
2461
|
+
|
2470
2462
|
#ifndef UNICODE_SUPPORT_VERSION
|
2471
2463
|
conn_args->database = (SQLCHAR *) RSTRING_PTR( r_db );
|
2472
2464
|
conn_args->database_len = (SQLSMALLINT) RSTRING_LEN( r_db );
|
2473
2465
|
|
2474
2466
|
conn_args->uid = (SQLCHAR *) RSTRING_PTR( r_uid );
|
2475
2467
|
conn_args->uid_len = (SQLSMALLINT) RSTRING_LEN( r_uid );
|
2476
|
-
|
2468
|
+
|
2477
2469
|
conn_args->password = (SQLCHAR *) RSTRING_PTR( r_passwd );
|
2478
2470
|
conn_args->password_len = (SQLSMALLINT) RSTRING_LEN( r_passwd );
|
2471
|
+
|
2479
2472
|
#else
|
2480
2473
|
r_db_utf16 = _ruby_ibm_db_export_str_to_utf16( r_db );
|
2481
2474
|
r_db_ascii = _ruby_ibm_db_export_str_to_ascii( r_db );
|
2482
2475
|
r_uid_utf16 = _ruby_ibm_db_export_str_to_utf16( r_uid );
|
2483
2476
|
r_passwd_utf16 = _ruby_ibm_db_export_str_to_utf16( r_passwd );
|
2484
|
-
|
2477
|
+
|
2485
2478
|
conn_args->database = (SQLWCHAR *) RSTRING_PTR( r_db_utf16 );
|
2486
2479
|
conn_args->database_len = (SQLSMALLINT) RSTRING_LEN( r_db_utf16 )/sizeof(SQLWCHAR);
|
2487
2480
|
/*RSTRING returns the number of bytes, while CLI expects number of SQLWCHAR(2 bytes) elements, hence dividing the len by 2*/
|
2488
2481
|
|
2489
2482
|
conn_args->uid = (SQLWCHAR *) RSTRING_PTR( r_uid_utf16 );
|
2490
|
-
conn_args->uid_len = (SQLSMALLINT) RSTRING_LEN( r_uid_utf16 )/sizeof(SQLWCHAR);
|
2491
|
-
|
2483
|
+
conn_args->uid_len = (SQLSMALLINT) RSTRING_LEN( r_uid_utf16 )/sizeof(SQLWCHAR);
|
2492
2484
|
conn_args->password = (SQLWCHAR *) RSTRING_PTR( r_passwd_utf16 );
|
2493
2485
|
conn_args->password_len = (SQLSMALLINT) RSTRING_LEN( r_passwd_utf16 )/sizeof(SQLWCHAR);
|
2494
2486
|
#endif
|
@@ -2503,15 +2495,17 @@ static VALUE _ruby_ibm_db_connect_helper( int argc, VALUE *argv, int isPersisten
|
|
2503
2495
|
} else {
|
2504
2496
|
conn_args->ctlg_conn = 1;
|
2505
2497
|
}
|
2498
|
+
|
2506
2499
|
|
2507
|
-
helper_args = ALLOC( connect_helper_args );
|
2500
|
+
helper_args = ALLOC( connect_helper_args );
|
2508
2501
|
memset(helper_args,'\0',sizeof(struct _ibm_db_connect_helper_args_struct));
|
2502
|
+
|
2509
2503
|
|
2510
2504
|
helper_args->conn_args = conn_args;
|
2511
2505
|
helper_args->isPersistent = isPersistent;
|
2512
2506
|
helper_args->options = &options;
|
2513
2507
|
helper_args->error = &error;
|
2514
|
-
|
2508
|
+
|
2515
2509
|
if( isPersistent ) {
|
2516
2510
|
/*If making a persistent connection calculate the hash key to cache the connection in persistence list*/
|
2517
2511
|
#ifndef UNICODE_SUPPORT_VERSION
|
@@ -2526,43 +2520,67 @@ static VALUE _ruby_ibm_db_connect_helper( int argc, VALUE *argv, int isPersisten
|
|
2526
2520
|
} else {
|
2527
2521
|
helper_args->hKey = Qnil;
|
2528
2522
|
}
|
2529
|
-
|
2530
2523
|
if( !NIL_P(r_literal_replacement) ) {
|
2531
2524
|
helper_args->literal_replacement = NUM2INT(r_literal_replacement);
|
2532
2525
|
} else {
|
2533
2526
|
helper_args->literal_replacement = SET_QUOTED_LITERAL_REPLACEMENT_ON; /*QUOTED LITERAL replacemnt is ON by default*/
|
2534
2527
|
}
|
2535
|
-
|
2536
2528
|
/* Call the function where the actual logic is being run*/
|
2537
2529
|
#ifdef UNICODE_SUPPORT_VERSION
|
2538
|
-
|
2539
|
-
|
2540
|
-
|
2530
|
+
|
2531
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_connect_helper2, helper_args, (void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
2532
|
+
|
2533
|
+
|
2534
|
+
conn_res = helper_args->conn_res;
|
2535
|
+
|
2536
|
+
if(helper_args->isPersistent)
|
2537
|
+
{
|
2538
|
+
if(helper_args-> entry == NULL)
|
2539
|
+
{
|
2540
|
+
return_value = Qnil;
|
2541
|
+
}
|
2542
|
+
else
|
2543
|
+
{
|
2544
|
+
return_value = helper_args->entry;
|
2545
|
+
}
|
2546
|
+
}
|
2547
|
+
else
|
2548
|
+
{
|
2549
|
+
if( conn_res == NULL )
|
2550
|
+
{
|
2551
|
+
return_value = Qnil;
|
2552
|
+
}
|
2553
|
+
else
|
2554
|
+
{
|
2555
|
+
return_value = Data_Wrap_Struct(le_conn_struct, _ruby_ibm_db_mark_conn_struct, _ruby_ibm_db_free_conn_struct, conn_res);
|
2556
|
+
}
|
2557
|
+
}
|
2541
2558
|
#else
|
2542
2559
|
return_value = _ruby_ibm_db_connect_helper2( helper_args );
|
2543
2560
|
#endif
|
2544
|
-
|
2545
2561
|
/* Free the memory allocated */
|
2546
2562
|
if(conn_args != NULL) {
|
2547
2563
|
/* Memory to structure elements of helper_args is not allocated explicitly hence it is automatically freed by Ruby.
|
2548
2564
|
Dont try to explicitly free it, else a double free exception is thrown and the application will crash
|
2549
2565
|
with memory dump.
|
2550
2566
|
*/
|
2551
|
-
helper_args->conn_args = NULL;
|
2552
|
-
ruby_xfree( conn_args );
|
2553
|
-
conn_args = NULL;
|
2567
|
+
helper_args->conn_args = NULL;
|
2568
|
+
ruby_xfree( conn_args );
|
2569
|
+
conn_args = NULL;
|
2554
2570
|
}
|
2555
|
-
|
2556
2571
|
if ( helper_args != NULL ) {
|
2557
|
-
ruby_xfree( helper_args );
|
2558
|
-
helper_args = NULL;
|
2572
|
+
ruby_xfree( helper_args );
|
2573
|
+
helper_args = NULL;
|
2559
2574
|
}
|
2560
|
-
|
2561
2575
|
if( return_value == Qnil ){
|
2562
|
-
rb_throw( RSTRING_PTR(error), Qnil );
|
2563
|
-
}
|
2576
|
+
rb_throw( RSTRING_PTR(error), Qnil );
|
2577
|
+
}
|
2564
2578
|
return return_value;
|
2565
2579
|
}
|
2580
|
+
|
2581
|
+
|
2582
|
+
|
2583
|
+
|
2566
2584
|
/*Check for feasibility of moving to other file*/
|
2567
2585
|
typedef struct _rounding_mode_struct {
|
2568
2586
|
stmt_handle *stmt_res;
|
@@ -2714,7 +2732,7 @@ static int _ruby_ibm_db_set_decfloat_rounding_mode_client( set_handle_attr_args
|
|
2714
2732
|
rnd_mode->stmt_res = stmt_res;
|
2715
2733
|
|
2716
2734
|
_ruby_ibm_db_set_decfloat_rounding_mode_client_helper(rnd_mode, conn_res);
|
2717
|
-
|
2735
|
+
|
2718
2736
|
_ruby_ibm_db_free_stmt_struct( rnd_mode->stmt_res );
|
2719
2737
|
rnd_mode->stmt_res = NULL;
|
2720
2738
|
stmt_res = NULL;
|
@@ -2809,6 +2827,7 @@ static void _ruby_ibm_db_clear_conn_err_cache()
|
|
2809
2827
|
*/
|
2810
2828
|
VALUE ibm_db_connect(int argc, VALUE *argv, VALUE self)
|
2811
2829
|
{
|
2830
|
+
|
2812
2831
|
_ruby_ibm_db_clear_conn_err_cache();
|
2813
2832
|
|
2814
2833
|
return _ruby_ibm_db_connect_helper( argc, argv, 0 );
|
@@ -2873,13 +2892,14 @@ VALUE ibm_db_connect(int argc, VALUE *argv, VALUE self)
|
|
2873
2892
|
VALUE ibm_db_pconnect(int argc, VALUE *argv, VALUE self)
|
2874
2893
|
{
|
2875
2894
|
_ruby_ibm_db_clear_conn_err_cache();
|
2876
|
-
|
2877
2895
|
return _ruby_ibm_db_connect_helper( argc, argv, 1);
|
2896
|
+
|
2878
2897
|
}
|
2879
2898
|
/*
|
2880
2899
|
* CreateDB helper
|
2881
2900
|
*/
|
2882
2901
|
VALUE ruby_ibm_db_createDb_helper(VALUE connection, VALUE dbName, VALUE codeSet, VALUE mode, int createNX) {
|
2902
|
+
|
2883
2903
|
|
2884
2904
|
VALUE return_value = Qfalse;
|
2885
2905
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -2895,13 +2915,13 @@ VALUE ruby_ibm_db_createDb_helper(VALUE connection, VALUE dbName, VALUE codeSet,
|
|
2895
2915
|
|
2896
2916
|
if (!NIL_P(connection)) {
|
2897
2917
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
2898
|
-
|
2918
|
+
|
2899
2919
|
if( 0 == createDbSupported ) {
|
2900
2920
|
rb_warn("Create Database not supported: This function is only supported from DB2 Client v97fp4 version and onwards");
|
2901
2921
|
return Qfalse;
|
2902
2922
|
}
|
2903
|
-
|
2904
|
-
if (!conn_res->handle_active) {
|
2923
|
+
|
2924
|
+
if (!conn_res || !conn_res->handle_active) {
|
2905
2925
|
rb_warn("Connection is not active");
|
2906
2926
|
return Qfalse;
|
2907
2927
|
}
|
@@ -2953,10 +2973,10 @@ VALUE ruby_ibm_db_createDb_helper(VALUE connection, VALUE dbName, VALUE codeSet,
|
|
2953
2973
|
|
2954
2974
|
_ruby_ibm_db_clear_conn_err_cache();
|
2955
2975
|
|
2956
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
2957
|
-
|
2958
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLCreateDB_helper, create_db_args,
|
2976
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
2977
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLCreateDB_helper, create_db_args,
|
2959
2978
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL );
|
2979
|
+
rc = create_db_args->rc;
|
2960
2980
|
#else
|
2961
2981
|
rc = _ruby_ibm_db_SQLCreateDB_helper( create_db_args );
|
2962
2982
|
#endif
|
@@ -3056,8 +3076,8 @@ VALUE ruby_ibm_db_dropDb_helper(VALUE connection, VALUE dbName) {
|
|
3056
3076
|
rb_warn("Drop Database not supported: This function is only supported from DB2 Client v97fp4 version and onwards");
|
3057
3077
|
return Qfalse;
|
3058
3078
|
}
|
3059
|
-
|
3060
|
-
if (!conn_res->handle_active) {
|
3079
|
+
|
3080
|
+
if (!conn_res || !conn_res->handle_active) {
|
3061
3081
|
rb_warn("Connection is not active");
|
3062
3082
|
return Qfalse;
|
3063
3083
|
}
|
@@ -3083,10 +3103,10 @@ VALUE ruby_ibm_db_dropDb_helper(VALUE connection, VALUE dbName) {
|
|
3083
3103
|
|
3084
3104
|
_ruby_ibm_db_clear_conn_err_cache();
|
3085
3105
|
|
3086
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3087
|
-
|
3088
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDropDB_helper, drop_db_args,
|
3106
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3107
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDropDB_helper, drop_db_args,
|
3089
3108
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL );
|
3109
|
+
rc = drop_db_args->rc;
|
3090
3110
|
#else
|
3091
3111
|
rc = _ruby_ibm_db_SQLDropDB_helper( drop_db_args );
|
3092
3112
|
#endif
|
@@ -3288,12 +3308,11 @@ VALUE ibm_db_autocommit(int argc, VALUE *argv, VALUE self)
|
|
3288
3308
|
|
3289
3309
|
if (!NIL_P(connection)) {
|
3290
3310
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
3291
|
-
|
3292
|
-
if (!conn_res->handle_active) {
|
3311
|
+
|
3312
|
+
if (!conn_res || !conn_res->handle_active) {
|
3293
3313
|
rb_warn("Connection is not active");
|
3294
3314
|
return Qfalse;
|
3295
3315
|
}
|
3296
|
-
|
3297
3316
|
/* If value in handle is different from value passed in */
|
3298
3317
|
if (argc == 2) {
|
3299
3318
|
autocommit = FIX2INT(value);
|
@@ -3304,16 +3323,13 @@ VALUE ibm_db_autocommit(int argc, VALUE *argv, VALUE self)
|
|
3304
3323
|
handleAttr_args->handle = &( conn_res->hdbc );
|
3305
3324
|
handleAttr_args->strLength = SQL_IS_INTEGER;
|
3306
3325
|
handleAttr_args->attribute = SQL_ATTR_AUTOCOMMIT;
|
3307
|
-
|
3308
3326
|
|
3309
3327
|
#ifndef PASE
|
3310
3328
|
handleAttr_args->valuePtr = (SQLPOINTER)autocommit;
|
3311
3329
|
#else
|
3312
3330
|
handleAttr_args->valuePtr = (SQLPOINTER)&autocommit;
|
3313
3331
|
#endif
|
3314
|
-
|
3315
3332
|
rc = _ruby_ibm_db_SQLSetConnectAttr_helper( handleAttr_args );
|
3316
|
-
|
3317
3333
|
if ( rc == SQL_ERROR ) {
|
3318
3334
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 1 );
|
3319
3335
|
} else {
|
@@ -3323,7 +3339,7 @@ VALUE ibm_db_autocommit(int argc, VALUE *argv, VALUE self)
|
|
3323
3339
|
* Hence set flag_transaction to 0 indicating no transaction is in progress */
|
3324
3340
|
if( autocommit == SQL_AUTOCOMMIT_ON ) {
|
3325
3341
|
conn_res->transaction_active = 0;
|
3326
|
-
}
|
3342
|
+
}
|
3327
3343
|
}
|
3328
3344
|
}
|
3329
3345
|
ruby_xfree( handleAttr_args );
|
@@ -3333,12 +3349,10 @@ VALUE ibm_db_autocommit(int argc, VALUE *argv, VALUE self)
|
|
3333
3349
|
ret_val = INT2NUM(conn_res->auto_commit);
|
3334
3350
|
}
|
3335
3351
|
}
|
3336
|
-
|
3337
3352
|
if ( handleAttr_args != NULL ) {
|
3338
3353
|
ruby_xfree( handleAttr_args );
|
3339
3354
|
handleAttr_args = NULL;
|
3340
3355
|
}
|
3341
|
-
|
3342
3356
|
return ret_val;
|
3343
3357
|
}
|
3344
3358
|
/* */
|
@@ -3434,6 +3448,7 @@ static void _ruby_ibm_db_add_param_cache( stmt_handle *stmt_res, int param_no, c
|
|
3434
3448
|
*/
|
3435
3449
|
VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long param_type, long data_type,
|
3436
3450
|
long precision, long scale, long size, stmt_handle *stmt_res, describeparam_args *data) {
|
3451
|
+
|
3437
3452
|
int rc = 0;
|
3438
3453
|
VALUE return_value = Qtrue;
|
3439
3454
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -3446,10 +3461,11 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long
|
|
3446
3461
|
case 3:
|
3447
3462
|
param_type = SQL_PARAM_INPUT;
|
3448
3463
|
|
3449
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3450
|
-
|
3451
|
-
|
3464
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3465
|
+
|
3466
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3452
3467
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
|
3468
|
+
rc = data->rc;
|
3453
3469
|
#else
|
3454
3470
|
rc = _ruby_ibm_db_SQLDescribeParam_helper( data );
|
3455
3471
|
#endif
|
@@ -3467,10 +3483,10 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long
|
|
3467
3483
|
|
3468
3484
|
case 4:
|
3469
3485
|
|
3470
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3471
|
-
|
3472
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3486
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3487
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3473
3488
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
|
3489
|
+
rc = data->rc;
|
3474
3490
|
#else
|
3475
3491
|
rc = _ruby_ibm_db_SQLDescribeParam_helper( data );
|
3476
3492
|
#endif
|
@@ -3488,10 +3504,10 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long
|
|
3488
3504
|
|
3489
3505
|
case 5:
|
3490
3506
|
|
3491
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3492
|
-
|
3493
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3507
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3508
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3494
3509
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
3510
|
+
rc = data->rc;
|
3495
3511
|
#else
|
3496
3512
|
rc = _ruby_ibm_db_SQLDescribeParam_helper( data );
|
3497
3513
|
#endif
|
@@ -3510,10 +3526,10 @@ VALUE ibm_db_bind_param_helper(int argc, char * varname, long varname_len ,long
|
|
3510
3526
|
|
3511
3527
|
case 6:
|
3512
3528
|
|
3513
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3514
|
-
|
3515
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3529
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3530
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDescribeParam_helper, data,
|
3516
3531
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
3532
|
+
rc = data->rc;
|
3517
3533
|
#else
|
3518
3534
|
rc = _ruby_ibm_db_SQLDescribeParam_helper( data );
|
3519
3535
|
#endif
|
@@ -3689,6 +3705,7 @@ VALUE ibm_db_bind_param(int argc, VALUE *argv, VALUE self)
|
|
3689
3705
|
ruby_xfree( desc_param_args );
|
3690
3706
|
desc_param_args = NULL;
|
3691
3707
|
}
|
3708
|
+
|
3692
3709
|
return return_value;
|
3693
3710
|
}
|
3694
3711
|
/* */
|
@@ -3728,7 +3745,8 @@ VALUE ibm_db_close(int argc, VALUE *argv, VALUE self)
|
|
3728
3745
|
/* Check to see if it's a persistent connection; if so, just return true */
|
3729
3746
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
3730
3747
|
|
3731
|
-
|
3748
|
+
|
3749
|
+
if (!conn_res || !conn_res->handle_active) {
|
3732
3750
|
rb_warn("Connection is not active");
|
3733
3751
|
return Qfalse;
|
3734
3752
|
}
|
@@ -3743,10 +3761,10 @@ VALUE ibm_db_close(int argc, VALUE *argv, VALUE self)
|
|
3743
3761
|
end_X_args->handleType = SQL_HANDLE_DBC;
|
3744
3762
|
end_X_args->completionType = SQL_ROLLBACK; /*Remeber you are rolling back the transaction*/
|
3745
3763
|
|
3746
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3747
|
-
|
3748
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
|
3764
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3765
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
|
3749
3766
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
3767
|
+
rc = end_X_args->rc;
|
3750
3768
|
#else
|
3751
3769
|
rc = _ruby_ibm_db_SQLEndTran( end_X_args );
|
3752
3770
|
#endif
|
@@ -3763,18 +3781,16 @@ VALUE ibm_db_close(int argc, VALUE *argv, VALUE self)
|
|
3763
3781
|
}
|
3764
3782
|
|
3765
3783
|
#ifdef UNICODE_SUPPORT_VERSION
|
3766
|
-
|
3767
|
-
|
3768
|
-
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
3784
|
+
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLDisconnect_helper, &(conn_res->hdbc),
|
3785
|
+
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
3769
3786
|
#else
|
3770
|
-
|
3787
|
+
rc = _ruby_ibm_db_SQLDisconnect_helper( &(conn_res->hdbc) );
|
3771
3788
|
#endif
|
3772
3789
|
|
3773
3790
|
if ( rc == SQL_ERROR ) {
|
3774
3791
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 1 );
|
3775
3792
|
return_value = Qfalse;
|
3776
3793
|
} else {
|
3777
|
-
|
3778
3794
|
rc = SQLFreeHandle( SQL_HANDLE_DBC, conn_res->hdbc);
|
3779
3795
|
if ( rc == SQL_ERROR ) {
|
3780
3796
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 1 );
|
@@ -3798,6 +3814,7 @@ VALUE ibm_db_close(int argc, VALUE *argv, VALUE self)
|
|
3798
3814
|
} else {
|
3799
3815
|
return_value = Qfalse;
|
3800
3816
|
}
|
3817
|
+
|
3801
3818
|
return return_value;
|
3802
3819
|
}
|
3803
3820
|
/* */
|
@@ -3940,10 +3957,10 @@ VALUE ibm_db_column_privileges(int argc, VALUE *argv, VALUE self)
|
|
3940
3957
|
}
|
3941
3958
|
col_privileges_args->stmt_res = stmt_res;
|
3942
3959
|
|
3943
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
3944
|
-
|
3945
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColumnPrivileges_helper, col_privileges_args,
|
3960
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
3961
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColumnPrivileges_helper, col_privileges_args,
|
3946
3962
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
3963
|
+
rc = col_privileges_args->rc;
|
3947
3964
|
#else
|
3948
3965
|
rc = _ruby_ibm_db_SQLColumnPrivileges_helper( col_privileges_args );
|
3949
3966
|
#endif
|
@@ -3952,7 +3969,6 @@ VALUE ibm_db_column_privileges(int argc, VALUE *argv, VALUE self)
|
|
3952
3969
|
|
3953
3970
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, (SQLHSTMT)stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
3954
3971
|
NULL, NULL, -1, 1, 1 );
|
3955
|
-
|
3956
3972
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
3957
3973
|
stmt_res = NULL;
|
3958
3974
|
|
@@ -4066,7 +4082,7 @@ VALUE ibm_db_columns(int argc, VALUE *argv, VALUE self)
|
|
4066
4082
|
if (!NIL_P(connection)) {
|
4067
4083
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
4068
4084
|
|
4069
|
-
if ( !conn_res->handle_active ) {
|
4085
|
+
if ( !conn_res || !conn_res->handle_active ) {
|
4070
4086
|
rb_warn("Connection is not active");
|
4071
4087
|
return_value = Qfalse;
|
4072
4088
|
} else {
|
@@ -4121,10 +4137,10 @@ VALUE ibm_db_columns(int argc, VALUE *argv, VALUE self)
|
|
4121
4137
|
}
|
4122
4138
|
col_metadata_args->stmt_res = stmt_res;
|
4123
4139
|
|
4124
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
4125
|
-
|
4126
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColumns_helper, col_metadata_args,
|
4140
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
4141
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColumns_helper, col_metadata_args,
|
4127
4142
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
4143
|
+
rc = col_metadata_args->rc;
|
4128
4144
|
#else
|
4129
4145
|
rc = _ruby_ibm_db_SQLColumns_helper( col_metadata_args );
|
4130
4146
|
#endif
|
@@ -4133,7 +4149,6 @@ VALUE ibm_db_columns(int argc, VALUE *argv, VALUE self)
|
|
4133
4149
|
|
4134
4150
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, (SQLHSTMT)stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
4135
4151
|
NULL, NULL, -1, 1, 1 );
|
4136
|
-
|
4137
4152
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
4138
4153
|
stmt_res = NULL;
|
4139
4154
|
|
@@ -4207,6 +4222,7 @@ VALUE ibm_db_columns(int argc, VALUE *argv, VALUE self)
|
|
4207
4222
|
*/
|
4208
4223
|
VALUE ibm_db_foreign_keys(int argc, VALUE *argv, VALUE self)
|
4209
4224
|
{
|
4225
|
+
|
4210
4226
|
VALUE r_qualifier = Qnil;
|
4211
4227
|
VALUE r_owner = Qnil;
|
4212
4228
|
VALUE r_table_name = Qnil;
|
@@ -4288,10 +4304,10 @@ VALUE ibm_db_foreign_keys(int argc, VALUE *argv, VALUE self)
|
|
4288
4304
|
|
4289
4305
|
col_metadata_args->stmt_res = stmt_res;
|
4290
4306
|
|
4291
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
4292
|
-
|
4293
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLForeignKeys_helper, col_metadata_args,
|
4307
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
4308
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLForeignKeys_helper, col_metadata_args,
|
4294
4309
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
4310
|
+
rc = col_metadata_args->rc;
|
4295
4311
|
#else
|
4296
4312
|
rc = _ruby_ibm_db_SQLForeignKeys_helper( col_metadata_args );
|
4297
4313
|
#endif
|
@@ -4300,7 +4316,6 @@ VALUE ibm_db_foreign_keys(int argc, VALUE *argv, VALUE self)
|
|
4300
4316
|
|
4301
4317
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
4302
4318
|
NULL, NULL, -1, 1, 1 );
|
4303
|
-
|
4304
4319
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
4305
4320
|
stmt_res = NULL;
|
4306
4321
|
|
@@ -4445,10 +4460,10 @@ VALUE ibm_db_primary_keys(int argc, VALUE *argv, VALUE self)
|
|
4445
4460
|
}
|
4446
4461
|
col_metadata_args->stmt_res = stmt_res;
|
4447
4462
|
|
4448
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
4449
|
-
|
4450
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLPrimaryKeys_helper, col_metadata_args,
|
4463
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
4464
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLPrimaryKeys_helper, col_metadata_args,
|
4451
4465
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
4466
|
+
rc = col_metadata_args->rc;
|
4452
4467
|
#else
|
4453
4468
|
rc = _ruby_ibm_db_SQLPrimaryKeys_helper( col_metadata_args );
|
4454
4469
|
#endif
|
@@ -4457,7 +4472,6 @@ VALUE ibm_db_primary_keys(int argc, VALUE *argv, VALUE self)
|
|
4457
4472
|
|
4458
4473
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
4459
4474
|
NULL, NULL, -1, 1, 1 );
|
4460
|
-
|
4461
4475
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
4462
4476
|
stmt_res = NULL;
|
4463
4477
|
|
@@ -4582,7 +4596,7 @@ VALUE ibm_db_procedure_columns(int argc, VALUE *argv, VALUE self)
|
|
4582
4596
|
if (!NIL_P(connection)) {
|
4583
4597
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
4584
4598
|
|
4585
|
-
if (!conn_res->handle_active) {
|
4599
|
+
if (!conn_res || !conn_res->handle_active) {
|
4586
4600
|
rb_warn("Connection is not active");
|
4587
4601
|
return_value = Qfalse;
|
4588
4602
|
} else {
|
@@ -4637,10 +4651,10 @@ VALUE ibm_db_procedure_columns(int argc, VALUE *argv, VALUE self)
|
|
4637
4651
|
}
|
4638
4652
|
col_metadata_args->stmt_res = stmt_res;
|
4639
4653
|
|
4640
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
4641
|
-
|
4642
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLProcedureColumns_helper, col_metadata_args,
|
4654
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
4655
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLProcedureColumns_helper, col_metadata_args,
|
4643
4656
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
|
4657
|
+
rc = col_metadata_args->rc;
|
4644
4658
|
#else
|
4645
4659
|
rc = _ruby_ibm_db_SQLProcedureColumns_helper( col_metadata_args );
|
4646
4660
|
#endif
|
@@ -4649,7 +4663,6 @@ VALUE ibm_db_procedure_columns(int argc, VALUE *argv, VALUE self)
|
|
4649
4663
|
|
4650
4664
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
4651
4665
|
NULL, NULL, -1, 1, 1 );
|
4652
|
-
|
4653
4666
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
4654
4667
|
stmt_res = NULL;
|
4655
4668
|
|
@@ -4750,7 +4763,7 @@ VALUE ibm_db_procedures(int argc, VALUE *argv, VALUE self)
|
|
4750
4763
|
if (!NIL_P(connection)) {
|
4751
4764
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
4752
4765
|
|
4753
|
-
if (!conn_res->handle_active) {
|
4766
|
+
if (!conn_res || !conn_res->handle_active) {
|
4754
4767
|
rb_warn("Connection is not active");
|
4755
4768
|
return_value = Qfalse;
|
4756
4769
|
} else {
|
@@ -4795,10 +4808,10 @@ VALUE ibm_db_procedures(int argc, VALUE *argv, VALUE self)
|
|
4795
4808
|
}
|
4796
4809
|
proc_metadata_args->stmt_res = stmt_res;
|
4797
4810
|
|
4798
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
4799
|
-
|
4800
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLProcedures_helper, proc_metadata_args,
|
4811
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
4812
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLProcedures_helper, proc_metadata_args,
|
4801
4813
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
|
4814
|
+
rc = proc_metadata_args->rc;
|
4802
4815
|
#else
|
4803
4816
|
rc = _ruby_ibm_db_SQLProcedures_helper( proc_metadata_args );
|
4804
4817
|
#endif
|
@@ -4807,7 +4820,6 @@ VALUE ibm_db_procedures(int argc, VALUE *argv, VALUE self)
|
|
4807
4820
|
|
4808
4821
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
4809
4822
|
NULL, NULL, -1, 1, 1 );
|
4810
|
-
|
4811
4823
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
4812
4824
|
stmt_res = NULL;
|
4813
4825
|
|
@@ -4925,7 +4937,7 @@ VALUE ibm_db_special_columns(int argc, VALUE *argv, VALUE self)
|
|
4925
4937
|
if (!NIL_P(connection)) {
|
4926
4938
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
4927
4939
|
|
4928
|
-
if (!conn_res->handle_active) {
|
4940
|
+
if (!conn_res || !conn_res->handle_active) {
|
4929
4941
|
rb_warn("Connection is not active");
|
4930
4942
|
return_value = Qfalse;
|
4931
4943
|
} else {
|
@@ -4973,10 +4985,10 @@ VALUE ibm_db_special_columns(int argc, VALUE *argv, VALUE self)
|
|
4973
4985
|
}
|
4974
4986
|
col_metadata_args->stmt_res = stmt_res;
|
4975
4987
|
|
4976
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
4977
|
-
|
4978
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLSpecialColumns_helper, col_metadata_args,
|
4988
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
4989
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLSpecialColumns_helper, col_metadata_args,
|
4979
4990
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res);
|
4991
|
+
rc = col_metadata_args->rc;
|
4980
4992
|
#else
|
4981
4993
|
rc = _ruby_ibm_db_SQLSpecialColumns_helper( col_metadata_args );
|
4982
4994
|
#endif
|
@@ -4985,7 +4997,6 @@ VALUE ibm_db_special_columns(int argc, VALUE *argv, VALUE self)
|
|
4985
4997
|
|
4986
4998
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
4987
4999
|
NULL, NULL, -1, 1, 1 );
|
4988
|
-
|
4989
5000
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
4990
5001
|
stmt_res = NULL;
|
4991
5002
|
|
@@ -5085,6 +5096,7 @@ VALUE ibm_db_special_columns(int argc, VALUE *argv, VALUE self)
|
|
5085
5096
|
*/
|
5086
5097
|
VALUE ibm_db_statistics(int argc, VALUE *argv, VALUE self)
|
5087
5098
|
{
|
5099
|
+
|
5088
5100
|
VALUE r_qualifier = Qnil;
|
5089
5101
|
VALUE r_owner = Qnil;
|
5090
5102
|
VALUE r_table_name = Qnil;
|
@@ -5121,7 +5133,7 @@ VALUE ibm_db_statistics(int argc, VALUE *argv, VALUE self)
|
|
5121
5133
|
if (!NIL_P(connection)) {
|
5122
5134
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
5123
5135
|
|
5124
|
-
if (!conn_res->handle_active) {
|
5136
|
+
if (!conn_res || !conn_res->handle_active) {
|
5125
5137
|
rb_warn("Connection is not active");
|
5126
5138
|
return_value = Qfalse;
|
5127
5139
|
} else {
|
@@ -5169,10 +5181,10 @@ VALUE ibm_db_statistics(int argc, VALUE *argv, VALUE self)
|
|
5169
5181
|
}
|
5170
5182
|
col_metadata_args->stmt_res = stmt_res;
|
5171
5183
|
|
5172
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
5173
|
-
|
5174
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLStatistics_helper, col_metadata_args,
|
5184
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5185
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLStatistics_helper, col_metadata_args,
|
5175
5186
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
5187
|
+
rc = col_metadata_args->rc;
|
5176
5188
|
#else
|
5177
5189
|
rc = _ruby_ibm_db_SQLStatistics_helper( col_metadata_args );
|
5178
5190
|
#endif
|
@@ -5181,7 +5193,6 @@ VALUE ibm_db_statistics(int argc, VALUE *argv, VALUE self)
|
|
5181
5193
|
|
5182
5194
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
5183
5195
|
NULL, NULL, -1, 1, 1 );
|
5184
|
-
|
5185
5196
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
5186
5197
|
stmt_res = NULL;
|
5187
5198
|
|
@@ -5329,10 +5340,10 @@ VALUE ibm_db_table_privileges(int argc, VALUE *argv, VALUE self)
|
|
5329
5340
|
|
5330
5341
|
table_privileges_args->stmt_res = stmt_res;
|
5331
5342
|
|
5332
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
5333
|
-
|
5334
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLTablePrivileges_helper, table_privileges_args,
|
5343
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5344
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLTablePrivileges_helper, table_privileges_args,
|
5335
5345
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
5346
|
+
rc = table_privileges_args->rc;
|
5336
5347
|
#else
|
5337
5348
|
rc = _ruby_ibm_db_SQLTablePrivileges_helper( table_privileges_args );
|
5338
5349
|
#endif
|
@@ -5341,7 +5352,6 @@ VALUE ibm_db_table_privileges(int argc, VALUE *argv, VALUE self)
|
|
5341
5352
|
|
5342
5353
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
5343
5354
|
NULL, NULL, -1, 1, 1 );
|
5344
|
-
|
5345
5355
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
5346
5356
|
stmt_res = NULL;
|
5347
5357
|
|
@@ -5447,7 +5457,7 @@ VALUE ibm_db_tables(int argc, VALUE *argv, VALUE self)
|
|
5447
5457
|
if (!NIL_P(connection)) {
|
5448
5458
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
5449
5459
|
|
5450
|
-
if (!conn_res->handle_active) {
|
5460
|
+
if (!conn_res || !conn_res->handle_active) {
|
5451
5461
|
rb_warn("Connection is not active");
|
5452
5462
|
return_value = Qfalse;
|
5453
5463
|
} else {
|
@@ -5504,10 +5514,10 @@ VALUE ibm_db_tables(int argc, VALUE *argv, VALUE self)
|
|
5504
5514
|
|
5505
5515
|
table_metadata_args->stmt_res = stmt_res;
|
5506
5516
|
|
5507
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
5508
|
-
|
5509
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLTables_helper, table_metadata_args,
|
5517
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5518
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLTables_helper, table_metadata_args,
|
5510
5519
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
5520
|
+
rc = table_metadata_args->rc;
|
5511
5521
|
#else
|
5512
5522
|
rc = _ruby_ibm_db_SQLTables_helper( table_metadata_args );
|
5513
5523
|
#endif
|
@@ -5516,7 +5526,6 @@ VALUE ibm_db_tables(int argc, VALUE *argv, VALUE self)
|
|
5516
5526
|
|
5517
5527
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1,
|
5518
5528
|
NULL, NULL, -1, 1, 1 );
|
5519
|
-
|
5520
5529
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
5521
5530
|
stmt_res = NULL;
|
5522
5531
|
|
@@ -5575,7 +5584,7 @@ VALUE ibm_db_commit(int argc, VALUE *argv, VALUE self)
|
|
5575
5584
|
if (!NIL_P(connection)) {
|
5576
5585
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
5577
5586
|
|
5578
|
-
if (!conn_res->handle_active) {
|
5587
|
+
if (!conn_res || !conn_res->handle_active) {
|
5579
5588
|
rb_warn("Connection is not active");
|
5580
5589
|
return Qfalse;
|
5581
5590
|
}
|
@@ -5587,10 +5596,10 @@ VALUE ibm_db_commit(int argc, VALUE *argv, VALUE self)
|
|
5587
5596
|
end_X_args->handleType = SQL_HANDLE_DBC;
|
5588
5597
|
end_X_args->completionType = SQL_COMMIT; /*Remeber you are Commiting the transaction*/
|
5589
5598
|
|
5590
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
5591
|
-
|
5592
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
|
5599
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5600
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
|
5593
5601
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
5602
|
+
rc = end_X_args->rc;
|
5594
5603
|
#else
|
5595
5604
|
rc = _ruby_ibm_db_SQLEndTran( end_X_args );
|
5596
5605
|
#endif
|
@@ -5609,7 +5618,6 @@ VALUE ibm_db_commit(int argc, VALUE *argv, VALUE self)
|
|
5609
5618
|
return Qtrue;
|
5610
5619
|
}
|
5611
5620
|
}
|
5612
|
-
|
5613
5621
|
return Qfalse;
|
5614
5622
|
}
|
5615
5623
|
/* */
|
@@ -5668,10 +5676,10 @@ static int _ruby_ibm_db_do_prepare(conn_handle *conn_res, VALUE stmt, stmt_handl
|
|
5668
5676
|
prepare_args->stmt_res = stmt_res;
|
5669
5677
|
|
5670
5678
|
/* Prepare the stmt. The cursor type requested has already been set in _ruby_ibm_db_assign_options */
|
5671
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
5672
|
-
|
5673
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLPrepare_helper, prepare_args,
|
5679
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5680
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLPrepare_helper, prepare_args,
|
5674
5681
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
5682
|
+
rc = prepare_args->rc;
|
5675
5683
|
#else
|
5676
5684
|
rc = _ruby_ibm_db_SQLPrepare_helper( prepare_args );
|
5677
5685
|
#endif
|
@@ -5751,15 +5759,17 @@ VALUE ibm_db_exec(int argc, VALUE *argv, VALUE self)
|
|
5751
5759
|
/* This function basically is a wrap of the _ruby_ibm_db_do_prepare and _ruby_ibm_db_execute_stmt */
|
5752
5760
|
/* After completing statement execution, it returns the statement resource */
|
5753
5761
|
rb_scan_args(argc, argv, "21", &connection, &stmt, &options);
|
5762
|
+
|
5754
5763
|
|
5755
5764
|
if (!NIL_P(connection)) {
|
5756
5765
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
5757
|
-
|
5758
|
-
if (!conn_res->handle_active) {
|
5766
|
+
|
5767
|
+
if (!conn_res || !conn_res->handle_active) {
|
5759
5768
|
rb_warn("Connection is not active");
|
5760
5769
|
return Qfalse;
|
5761
5770
|
}
|
5762
|
-
|
5771
|
+
|
5772
|
+
|
5763
5773
|
if (!NIL_P(stmt)) {
|
5764
5774
|
exec_direct_args = ALLOC( exec_cum_prepare_args );
|
5765
5775
|
memset(exec_direct_args,'\0',sizeof(struct _ibm_db_exec_direct_args_struct));
|
@@ -5776,11 +5786,11 @@ VALUE ibm_db_exec(int argc, VALUE *argv, VALUE self)
|
|
5776
5786
|
rb_warn("Supplied parameter is invalid");
|
5777
5787
|
return Qfalse;
|
5778
5788
|
}
|
5779
|
-
|
5789
|
+
|
5780
5790
|
_ruby_ibm_db_clear_stmt_err_cache();
|
5781
5791
|
|
5782
5792
|
stmt_res = _ibm_db_new_stmt_struct(conn_res);
|
5783
|
-
|
5793
|
+
|
5784
5794
|
/* Allocates the stmt handle */
|
5785
5795
|
/* returns the stat_handle back to the calling function */
|
5786
5796
|
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn_res->hdbc, &(stmt_res->hstmt));
|
@@ -5807,19 +5817,19 @@ VALUE ibm_db_exec(int argc, VALUE *argv, VALUE self)
|
|
5807
5817
|
|
5808
5818
|
exec_direct_args->stmt_res = stmt_res;
|
5809
5819
|
|
5810
|
-
|
5811
|
-
|
5812
|
-
|
5820
|
+
|
5821
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5822
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLExecDirect_helper, exec_direct_args,
|
5813
5823
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
5824
|
+
rc = exec_direct_args->rc;
|
5814
5825
|
#else
|
5815
5826
|
rc = _ruby_ibm_db_SQLExecDirect_helper( exec_direct_args );
|
5816
5827
|
#endif
|
5817
|
-
|
5828
|
+
|
5818
5829
|
if ( rc == SQL_ERROR ) {
|
5819
5830
|
|
5820
5831
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, stmt_res->hstmt,
|
5821
5832
|
SQL_HANDLE_STMT, rc, 1, NULL, NULL, -1, 1, 1 );
|
5822
|
-
|
5823
5833
|
_ruby_ibm_db_free_stmt_struct( stmt_res );
|
5824
5834
|
stmt_res = NULL;
|
5825
5835
|
|
@@ -5836,7 +5846,6 @@ VALUE ibm_db_exec(int argc, VALUE *argv, VALUE self)
|
|
5836
5846
|
ruby_xfree( exec_direct_args );
|
5837
5847
|
exec_direct_args = NULL;
|
5838
5848
|
}
|
5839
|
-
|
5840
5849
|
return return_value;
|
5841
5850
|
}
|
5842
5851
|
/* */
|
@@ -5883,10 +5892,10 @@ VALUE ibm_db_free_result(int argc, VALUE *argv, VALUE self)
|
|
5883
5892
|
freeStmt_args->stmt_res = stmt_res;
|
5884
5893
|
freeStmt_args->option = SQL_CLOSE;
|
5885
5894
|
|
5886
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
5887
|
-
|
5888
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLFreeStmt_helper, freeStmt_args,
|
5895
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
5896
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLFreeStmt_helper, freeStmt_args,
|
5889
5897
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
5898
|
+
rc = freeStmt_args->rc;
|
5890
5899
|
#else
|
5891
5900
|
rc = _ruby_ibm_db_SQLFreeStmt_helper( freeStmt_args );
|
5892
5901
|
#endif
|
@@ -5985,7 +5994,7 @@ VALUE ibm_db_prepare(int argc, VALUE *argv, VALUE self)
|
|
5985
5994
|
if (!NIL_P(connection)) {
|
5986
5995
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
5987
5996
|
|
5988
|
-
if (!conn_res->handle_active) {
|
5997
|
+
if (!conn_res || !conn_res->handle_active) {
|
5989
5998
|
rb_warn("Connection is not active");
|
5990
5999
|
return Qfalse;
|
5991
6000
|
}
|
@@ -6487,6 +6496,7 @@ static int _ruby_ibm_db_bind_param_list(stmt_handle *stmt_res, VALUE *error ) {
|
|
6487
6496
|
static int _ruby_ibm_db_execute_helper2(stmt_handle *stmt_res, VALUE *data, int bind_cmp_list,
|
6488
6497
|
int bind_params, VALUE *error )
|
6489
6498
|
{
|
6499
|
+
|
6490
6500
|
int rc = SQL_SUCCESS;
|
6491
6501
|
param_node *curr = NULL; /* To traverse the list */
|
6492
6502
|
|
@@ -6649,6 +6659,7 @@ void var_assign(char *name, VALUE value) {
|
|
6649
6659
|
ruby_xfree( statement );
|
6650
6660
|
statement = NULL;
|
6651
6661
|
#endif
|
6662
|
+
|
6652
6663
|
}
|
6653
6664
|
|
6654
6665
|
/*
|
@@ -6756,6 +6767,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6756
6767
|
*error = rb_str_new2("Execute Failed due to: <error message could not be retrieved>");
|
6757
6768
|
#endif
|
6758
6769
|
}
|
6770
|
+
bind_array->return_value = Qnil;
|
6759
6771
|
return Qnil;
|
6760
6772
|
}
|
6761
6773
|
|
@@ -6778,15 +6790,18 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6778
6790
|
#else
|
6779
6791
|
*error = rb_str_new2("Param is not an array");
|
6780
6792
|
#endif
|
6793
|
+
bind_array->return_value = Qnil;
|
6781
6794
|
return Qnil;
|
6782
6795
|
}
|
6783
6796
|
|
6784
6797
|
ret_value = _ruby_ibm_db_desc_and_bind_param_list(bind_array, error );
|
6785
6798
|
|
6786
6799
|
if(ret_value == Qnil ) {
|
6800
|
+
bind_array->return_value = Qnil;
|
6787
6801
|
return Qnil;
|
6788
6802
|
}
|
6789
6803
|
if(ret_value == Qfalse) {
|
6804
|
+
bind_array->return_value = Qfalse;
|
6790
6805
|
return Qfalse;
|
6791
6806
|
}
|
6792
6807
|
|
@@ -6800,6 +6815,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6800
6815
|
#else
|
6801
6816
|
*error = rb_str_new2("Number of params passed are more than bound parameters");
|
6802
6817
|
#endif
|
6818
|
+
bind_array->return_value = Qnil;
|
6803
6819
|
return Qnil;
|
6804
6820
|
} else if ( num < stmt_res->num_params ) {
|
6805
6821
|
/* Fewer parameters than we expected */
|
@@ -6808,6 +6824,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6808
6824
|
#else
|
6809
6825
|
*error = rb_str_new2("Number of params passed are less than bound parameters");
|
6810
6826
|
#endif
|
6827
|
+
bind_array->return_value = Qnil;
|
6811
6828
|
return Qnil;
|
6812
6829
|
}
|
6813
6830
|
|
@@ -6818,6 +6835,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6818
6835
|
#else
|
6819
6836
|
*error = rb_str_new2("Parameters not bound");
|
6820
6837
|
#endif
|
6838
|
+
bind_array->return_value = Qnil;
|
6821
6839
|
return Qnil;
|
6822
6840
|
} else {
|
6823
6841
|
/* The 1 denotes that you work with the whole list */
|
@@ -6826,6 +6844,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6826
6844
|
rc = _ruby_ibm_db_execute_helper2(stmt_res, NULL, 1, 0, error );
|
6827
6845
|
|
6828
6846
|
if ( rc == SQL_ERROR ) {
|
6847
|
+
bind_array->return_value = Qnil;
|
6829
6848
|
return Qnil;
|
6830
6849
|
}
|
6831
6850
|
}
|
@@ -6853,6 +6872,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6853
6872
|
*error = rb_str_new2("Statement Execute Failed: <error message could not be retrieved>");
|
6854
6873
|
#endif
|
6855
6874
|
}
|
6875
|
+
bind_array->return_value = Qnil;
|
6856
6876
|
return Qnil;
|
6857
6877
|
}
|
6858
6878
|
|
@@ -6892,7 +6912,7 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6892
6912
|
ruby_xfree( put_param_data_args );
|
6893
6913
|
put_param_data_args = NULL;
|
6894
6914
|
}
|
6895
|
-
|
6915
|
+
bind_array->return_value = Qnil;
|
6896
6916
|
return Qnil;
|
6897
6917
|
}
|
6898
6918
|
rc = _ruby_ibm_db_SQLParamData_helper( put_param_data_args );
|
@@ -6921,11 +6941,12 @@ static VALUE _ruby_ibm_db_execute_helper(stmt_bind_array *bind_array) {
|
|
6921
6941
|
*error = rb_str_new2("Sending data failed: <error message could not be retrieved>");
|
6922
6942
|
#endif
|
6923
6943
|
}
|
6924
|
-
|
6944
|
+
bind_array->return_value = Qnil;
|
6925
6945
|
return Qnil;
|
6926
6946
|
}
|
6927
6947
|
}
|
6928
6948
|
|
6949
|
+
bind_array->return_value = Qtrue;
|
6929
6950
|
return Qtrue;
|
6930
6951
|
}
|
6931
6952
|
/*
|
@@ -6989,10 +7010,10 @@ VALUE ibm_db_execute(int argc, VALUE *argv, VALUE self)
|
|
6989
7010
|
bind_array->num = 0;
|
6990
7011
|
bind_array->error = &error;
|
6991
7012
|
|
6992
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
6993
|
-
|
6994
|
-
ret_value = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_execute_helper, bind_array,
|
7013
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
7014
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_execute_helper, bind_array,
|
6995
7015
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
7016
|
+
ret_value = bind_array->return_value;
|
6996
7017
|
#else
|
6997
7018
|
ret_value = _ruby_ibm_db_execute_helper( bind_array );
|
6998
7019
|
#endif
|
@@ -7155,7 +7176,7 @@ VALUE ibm_db_conn_errormsg(int argc, VALUE *argv, VALUE self)
|
|
7155
7176
|
if (!NIL_P(connection)) {
|
7156
7177
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
7157
7178
|
|
7158
|
-
if (!conn_res->handle_active) {
|
7179
|
+
if (!conn_res || !conn_res->handle_active) {
|
7159
7180
|
rb_warn("Connection is not active");
|
7160
7181
|
return Qnil;
|
7161
7182
|
}
|
@@ -7309,7 +7330,7 @@ VALUE ibm_db_conn_error(int argc, VALUE *argv, VALUE self)
|
|
7309
7330
|
if (!NIL_P(connection)) {
|
7310
7331
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
7311
7332
|
|
7312
|
-
if (!conn_res->handle_active) {
|
7333
|
+
if (!conn_res || !conn_res->handle_active) {
|
7313
7334
|
rb_warn("Connection is not active");
|
7314
7335
|
return Qnil;
|
7315
7336
|
}
|
@@ -7475,7 +7496,7 @@ VALUE ibm_db_getErrormsg(int argc, VALUE *argv, VALUE self)
|
|
7475
7496
|
if( resType == DB_CONN ) { /*Resource Type is connection*/
|
7476
7497
|
Data_Get_Struct(conn_or_stmt, conn_handle, conn_res);
|
7477
7498
|
|
7478
|
-
if ( !conn_res->handle_active ) {
|
7499
|
+
if (!conn_res || !conn_res->handle_active ) {
|
7479
7500
|
rb_warn("Connection is not active");
|
7480
7501
|
return Qnil;
|
7481
7502
|
}
|
@@ -7775,10 +7796,10 @@ VALUE ibm_db_next_result(int argc, VALUE *argv, VALUE self)
|
|
7775
7796
|
nextresultparams->stmt_res = stmt_res;
|
7776
7797
|
nextresultparams->new_hstmt = &new_hstmt;
|
7777
7798
|
|
7778
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
7779
|
-
|
7780
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLNextResult_helper, nextresultparams,
|
7799
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
7800
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLNextResult_helper, nextresultparams,
|
7781
7801
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
7802
|
+
rc = nextresultparams->rc;
|
7782
7803
|
#else
|
7783
7804
|
rc = _ruby_ibm_db_SQLNextResult_helper( nextresultparams );
|
7784
7805
|
#endif
|
@@ -7811,7 +7832,7 @@ VALUE ibm_db_next_result(int argc, VALUE *argv, VALUE self)
|
|
7811
7832
|
new_stmt_res->hstmt = new_hstmt;
|
7812
7833
|
new_stmt_res->hdbc = stmt_res->hdbc;
|
7813
7834
|
new_stmt_res->is_freed = 0;
|
7814
|
-
|
7835
|
+
|
7815
7836
|
ret_value = Data_Wrap_Struct(le_stmt_struct,
|
7816
7837
|
_ruby_ibm_db_mark_stmt_struct, _ruby_ibm_db_free_stmt_struct,
|
7817
7838
|
new_stmt_res);
|
@@ -7827,6 +7848,7 @@ VALUE ibm_db_next_result(int argc, VALUE *argv, VALUE self)
|
|
7827
7848
|
ruby_xfree( nextresultparams );
|
7828
7849
|
nextresultparams = NULL;
|
7829
7850
|
}
|
7851
|
+
|
7830
7852
|
return ret_value;
|
7831
7853
|
}
|
7832
7854
|
/* */
|
@@ -7875,10 +7897,10 @@ VALUE ibm_db_num_fields(int argc, VALUE *argv, VALUE self)
|
|
7875
7897
|
result_cols_args->stmt_res = stmt_res;
|
7876
7898
|
result_cols_args->count = 0;
|
7877
7899
|
|
7878
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
7879
|
-
|
7880
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLNumResultCols_helper, result_cols_args,
|
7900
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
7901
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLNumResultCols_helper, result_cols_args,
|
7881
7902
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
7903
|
+
rc = result_cols_args->rc;
|
7882
7904
|
#else
|
7883
7905
|
rc = _ruby_ibm_db_SQLNumResultCols_helper( result_cols_args );
|
7884
7906
|
#endif
|
@@ -7907,7 +7929,6 @@ VALUE ibm_db_num_fields(int argc, VALUE *argv, VALUE self)
|
|
7907
7929
|
ruby_xfree( result_cols_args );
|
7908
7930
|
result_cols_args = NULL;
|
7909
7931
|
}
|
7910
|
-
|
7911
7932
|
return ret_val;
|
7912
7933
|
}
|
7913
7934
|
/* */
|
@@ -7969,10 +7990,10 @@ VALUE ibm_db_num_rows(int argc, VALUE *argv, VALUE self)
|
|
7969
7990
|
row_count_args->stmt_res = stmt_res;
|
7970
7991
|
row_count_args->count = 0;
|
7971
7992
|
|
7972
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
7973
|
-
|
7974
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLRowCount_helper, row_count_args,
|
7993
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
7994
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLRowCount_helper, row_count_args,
|
7975
7995
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
7996
|
+
rc = row_count_args->rc;
|
7976
7997
|
#else
|
7977
7998
|
rc = _ruby_ibm_db_SQLRowCount_helper( row_count_args );
|
7978
7999
|
#endif
|
@@ -8026,10 +8047,10 @@ static int _ruby_ibm_db_get_column_by_name(stmt_handle *stmt_res, VALUE column,
|
|
8026
8047
|
if ( stmt_res->column_info == NULL ) {
|
8027
8048
|
if ( release_gil == 1 ) {
|
8028
8049
|
|
8029
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
8030
|
-
|
8031
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_get_result_set_info, stmt_res,
|
8050
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
8051
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_get_result_set_info, stmt_res,
|
8032
8052
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
8053
|
+
rc = stmt_res->rc;
|
8033
8054
|
#else
|
8034
8055
|
rc = _ruby_ibm_db_get_result_set_info( stmt_res );
|
8035
8056
|
#endif
|
@@ -8190,10 +8211,10 @@ VALUE ibm_db_field_display_size(int argc, VALUE *argv, VALUE self)
|
|
8190
8211
|
colattr_args->col_num = col+1;
|
8191
8212
|
colattr_args->FieldIdentifier = SQL_DESC_DISPLAY_SIZE;
|
8192
8213
|
|
8193
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
8194
|
-
|
8195
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColAttributes_helper, colattr_args,
|
8214
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
8215
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColAttributes_helper, colattr_args,
|
8196
8216
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
8217
|
+
rc = colattr_args->rc;
|
8197
8218
|
#else
|
8198
8219
|
rc = _ruby_ibm_db_SQLColAttributes_helper( colattr_args );
|
8199
8220
|
#endif
|
@@ -8511,10 +8532,10 @@ VALUE ibm_db_field_width(int argc, VALUE *argv, VALUE self)
|
|
8511
8532
|
colattr_args->col_num = col+1;
|
8512
8533
|
colattr_args->FieldIdentifier = SQL_DESC_LENGTH;
|
8513
8534
|
|
8514
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
8515
|
-
|
8516
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColAttributes_helper, colattr_args,
|
8535
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
8536
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLColAttributes_helper, colattr_args,
|
8517
8537
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
8538
|
+
rc = colattr_args->rc;
|
8518
8539
|
#else
|
8519
8540
|
rc = _ruby_ibm_db_SQLColAttributes_helper( colattr_args );
|
8520
8541
|
#endif
|
@@ -8532,7 +8553,6 @@ VALUE ibm_db_field_width(int argc, VALUE *argv, VALUE self)
|
|
8532
8553
|
ruby_xfree( colattr_args );
|
8533
8554
|
colattr_args = NULL;
|
8534
8555
|
}
|
8535
|
-
|
8536
8556
|
return ret_val;
|
8537
8557
|
}
|
8538
8558
|
/* */
|
@@ -8602,36 +8622,30 @@ VALUE ibm_db_rollback(int argc, VALUE *argv, VALUE self)
|
|
8602
8622
|
end_tran_args *end_X_args = NULL;
|
8603
8623
|
|
8604
8624
|
rb_scan_args(argc, argv, "1", &connection);
|
8605
|
-
|
8606
8625
|
if (!NIL_P(connection)) {
|
8607
8626
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
8608
|
-
|
8609
|
-
if (!conn_res->handle_active) {
|
8627
|
+
if (!conn_res || !conn_res->handle_active) {
|
8610
8628
|
rb_warn("Connection is not active");
|
8611
8629
|
return Qfalse;
|
8612
8630
|
}
|
8613
|
-
|
8614
8631
|
end_X_args = ALLOC( end_tran_args );
|
8615
8632
|
memset(end_X_args,'\0',sizeof(struct _ibm_db_end_tran_args_struct));
|
8616
8633
|
|
8617
8634
|
end_X_args->hdbc = &(conn_res->hdbc);
|
8618
8635
|
end_X_args->handleType = SQL_HANDLE_DBC;
|
8619
8636
|
end_X_args->completionType = SQL_ROLLBACK; /*Remeber you are Rollingback the transaction*/
|
8620
|
-
|
8621
8637
|
#ifdef UNICODE_SUPPORT_VERSION
|
8622
|
-
|
8623
|
-
rc = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
|
8638
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_SQLEndTran, end_X_args,
|
8624
8639
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
8640
|
+
rc = end_X_args->rc;
|
8625
8641
|
#else
|
8626
8642
|
rc = _ruby_ibm_db_SQLEndTran( end_X_args );
|
8627
8643
|
#endif
|
8628
|
-
|
8629
8644
|
/*Free the memory allocated*/
|
8630
8645
|
if(end_X_args != NULL) {
|
8631
8646
|
ruby_xfree( end_X_args );
|
8632
8647
|
end_X_args = NULL;
|
8633
8648
|
}
|
8634
|
-
|
8635
8649
|
if ( rc == SQL_ERROR ) {
|
8636
8650
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 1 );
|
8637
8651
|
return Qfalse;
|
@@ -8640,7 +8654,6 @@ VALUE ibm_db_rollback(int argc, VALUE *argv, VALUE self)
|
|
8640
8654
|
return Qtrue;
|
8641
8655
|
}
|
8642
8656
|
}
|
8643
|
-
|
8644
8657
|
return Qfalse;
|
8645
8658
|
}
|
8646
8659
|
/* */
|
@@ -8710,7 +8723,6 @@ static RETCODE _ruby_ibm_db_get_data(stmt_handle *stmt_res, int col_num, short c
|
|
8710
8723
|
ruby_xfree( getData_args );
|
8711
8724
|
getData_args = NULL;
|
8712
8725
|
}
|
8713
|
-
|
8714
8726
|
return rc;
|
8715
8727
|
}
|
8716
8728
|
/* */
|
@@ -8842,6 +8854,8 @@ int isNullLOB(VALUE *return_value,int i,stmt_handle *stmt_res,int op)
|
|
8842
8854
|
In all other cases the value returned will be either Qfalse (meaning SQL_NO_DATA), VALUE or Qnil (meaning the value is nil)
|
8843
8855
|
*/
|
8844
8856
|
static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
8857
|
+
|
8858
|
+
|
8845
8859
|
long col_num;
|
8846
8860
|
RETCODE rc;
|
8847
8861
|
SQLPOINTER out_ptr;
|
@@ -8854,6 +8868,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8854
8868
|
VALUE return_value = Qnil;
|
8855
8869
|
stmt_handle *stmt_res = data->stmt_res;
|
8856
8870
|
VALUE column = data->column;
|
8871
|
+
VALUE ret_value;
|
8857
8872
|
|
8858
8873
|
if(TYPE(column) == T_STRING) {
|
8859
8874
|
col_num = _ruby_ibm_db_get_column_by_name(stmt_res, column, 0);
|
@@ -8880,6 +8895,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8880
8895
|
*(data->error) = rb_str_new2("Column information cannot be retrieved: <error message could not be retrieved>");
|
8881
8896
|
#endif
|
8882
8897
|
}
|
8898
|
+
data->return_value = Qnil;
|
8883
8899
|
return Qnil;
|
8884
8900
|
}
|
8885
8901
|
}
|
@@ -8890,6 +8906,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8890
8906
|
#else
|
8891
8907
|
*(data->error) = rb_str_new2("Column ordinal out of range" );
|
8892
8908
|
#endif
|
8909
|
+
data->return_value = Qnil;
|
8893
8910
|
return Qnil;
|
8894
8911
|
}
|
8895
8912
|
|
@@ -8933,6 +8950,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8933
8950
|
|
8934
8951
|
if ( out_ptr == NULL ) {
|
8935
8952
|
rb_warn( "Failed to Allocate Memory while trying to retrieve the result" );
|
8953
|
+
data->return_value = Qnil;
|
8936
8954
|
return Qnil;
|
8937
8955
|
}
|
8938
8956
|
|
@@ -8943,10 +8961,12 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8943
8961
|
#endif
|
8944
8962
|
|
8945
8963
|
if ( rc == SQL_ERROR ) {
|
8964
|
+
data->return_value = Qfalse;
|
8946
8965
|
return Qfalse;
|
8947
8966
|
}
|
8948
8967
|
if (out_length == SQL_NULL_DATA) {
|
8949
8968
|
ruby_xfree( out_ptr );
|
8969
|
+
data->return_value = Qnil;
|
8950
8970
|
return Qnil;
|
8951
8971
|
} else {
|
8952
8972
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -8956,6 +8976,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8956
8976
|
#endif
|
8957
8977
|
ruby_xfree( out_ptr );
|
8958
8978
|
out_ptr = NULL;
|
8979
|
+
data->return_value = return_value;
|
8959
8980
|
return return_value;
|
8960
8981
|
}
|
8961
8982
|
break;
|
@@ -8978,22 +8999,26 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
8978
8999
|
|
8979
9000
|
if ( out_ptr == NULL ) {
|
8980
9001
|
rb_warn( "Failed to Allocate Memory while trying to retrieve the result" );
|
9002
|
+
data->return_value = Qnil;
|
8981
9003
|
return Qnil;
|
8982
9004
|
}
|
8983
9005
|
|
8984
9006
|
rc = _ruby_ibm_db_get_data(stmt_res, col_num+1, SQL_C_CHAR, out_ptr, in_length, &out_length);
|
8985
9007
|
|
8986
9008
|
if ( rc == SQL_ERROR ) {
|
9009
|
+
data->return_value = Qfalse;
|
8987
9010
|
return Qfalse;
|
8988
9011
|
}
|
8989
9012
|
|
8990
9013
|
if (out_length == SQL_NULL_DATA) {
|
8991
9014
|
ruby_xfree( out_ptr );
|
9015
|
+
data->return_value = Qnil;
|
8992
9016
|
return Qnil;
|
8993
9017
|
} else {
|
8994
9018
|
return_value = rb_str_new2((char*)out_ptr);
|
8995
9019
|
ruby_xfree( out_ptr );
|
8996
9020
|
out_ptr = NULL;
|
9021
|
+
data->return_value = return_value;
|
8997
9022
|
return return_value;
|
8998
9023
|
}
|
8999
9024
|
break;
|
@@ -9001,12 +9026,16 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9001
9026
|
case SQL_INTEGER:
|
9002
9027
|
rc = _ruby_ibm_db_get_data(stmt_res, col_num+1, SQL_C_LONG, &long_val, sizeof(long_val), &out_length);
|
9003
9028
|
if ( rc == SQL_ERROR ) {
|
9029
|
+
data->return_value = Qfalse;
|
9004
9030
|
return Qfalse;
|
9005
9031
|
}
|
9006
9032
|
if (out_length == SQL_NULL_DATA) {
|
9033
|
+
data->return_value = Qnil;
|
9007
9034
|
return Qnil;
|
9008
9035
|
} else {
|
9009
|
-
|
9036
|
+
VALUE ret_value = INT2NUM(long_val);
|
9037
|
+
data->return_value = ret_value;
|
9038
|
+
return ret_value;
|
9010
9039
|
}
|
9011
9040
|
break;
|
9012
9041
|
|
@@ -9015,12 +9044,16 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9015
9044
|
case SQL_DOUBLE:
|
9016
9045
|
rc = _ruby_ibm_db_get_data(stmt_res, col_num+1, SQL_C_DOUBLE, &double_val, sizeof(double_val), &out_length);
|
9017
9046
|
if ( rc == SQL_ERROR ) {
|
9047
|
+
data->return_value = Qfalse;
|
9018
9048
|
return Qfalse;
|
9019
9049
|
}
|
9020
9050
|
if (out_length == SQL_NULL_DATA) {
|
9051
|
+
data->return_value = Qnil;
|
9021
9052
|
return Qnil;
|
9022
9053
|
} else {
|
9023
|
-
|
9054
|
+
VALUE ret_value = rb_float_new(double_val);
|
9055
|
+
data->return_value = ret_value;
|
9056
|
+
return ret_value;
|
9024
9057
|
}
|
9025
9058
|
break;
|
9026
9059
|
|
@@ -9029,10 +9062,12 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9029
9062
|
rc = _ruby_ibm_db_get_length(stmt_res, col_num+1, &in_length);
|
9030
9063
|
|
9031
9064
|
if ( rc == SQL_ERROR ) {
|
9065
|
+
data->return_value = Qfalse;
|
9032
9066
|
return Qfalse;
|
9033
9067
|
}
|
9034
9068
|
|
9035
9069
|
if (in_length == SQL_NULL_DATA) {
|
9070
|
+
data->return_value = Qnil;
|
9036
9071
|
return Qnil;
|
9037
9072
|
}
|
9038
9073
|
|
@@ -9046,6 +9081,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9046
9081
|
|
9047
9082
|
if ( out_ptr == NULL ) {
|
9048
9083
|
rb_warn( "Failed to Allocate Memory for LOB Data" );
|
9084
|
+
data->return_value = Qnil;
|
9049
9085
|
return Qnil;
|
9050
9086
|
}
|
9051
9087
|
|
@@ -9056,6 +9092,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9056
9092
|
#endif
|
9057
9093
|
|
9058
9094
|
if (rc == SQL_ERROR) {
|
9095
|
+
data->return_value = Qfalse;
|
9059
9096
|
return Qfalse;
|
9060
9097
|
}
|
9061
9098
|
|
@@ -9067,7 +9104,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9067
9104
|
|
9068
9105
|
ruby_xfree( out_ptr );
|
9069
9106
|
out_ptr = NULL;
|
9070
|
-
|
9107
|
+
data->return_value = return_value;
|
9071
9108
|
return return_value;
|
9072
9109
|
break;
|
9073
9110
|
|
@@ -9081,16 +9118,20 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9081
9118
|
rc = _ruby_ibm_db_get_length( stmt_res, col_num+1, &in_length );
|
9082
9119
|
|
9083
9120
|
if ( rc == SQL_ERROR ) {
|
9121
|
+
data->return_value = Qfalse;
|
9084
9122
|
return Qfalse;
|
9085
9123
|
}
|
9086
9124
|
|
9087
9125
|
if (in_length == SQL_NULL_DATA) {
|
9126
|
+
data->return_value = Qnil;
|
9088
9127
|
return Qnil;
|
9089
9128
|
}
|
9090
9129
|
|
9091
9130
|
switch (stmt_res->s_bin_mode) {
|
9092
|
-
case PASSTHRU:
|
9093
|
-
|
9131
|
+
case PASSTHRU:
|
9132
|
+
ret_value = rb_str_new("",0);
|
9133
|
+
data->return_value = ret_value;
|
9134
|
+
return ret_value;
|
9094
9135
|
break;
|
9095
9136
|
/* returns here */
|
9096
9137
|
case CONVERT:
|
@@ -9104,18 +9145,20 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9104
9145
|
|
9105
9146
|
if ( out_ptr == NULL ) {
|
9106
9147
|
rb_warn( "Failed to Allocate Memory for LOB Data" );
|
9148
|
+
data->return_value = Qnil;
|
9107
9149
|
return Qnil;
|
9108
9150
|
}
|
9109
9151
|
|
9110
9152
|
rc = _ruby_ibm_db_get_data2(stmt_res, col_num+1, lob_bind_type, out_ptr, in_length, in_length, &out_length);
|
9111
9153
|
|
9112
9154
|
if (rc == SQL_ERROR) {
|
9155
|
+
data->return_value = Qfalse;
|
9113
9156
|
return Qfalse;
|
9114
9157
|
}
|
9115
9158
|
return_value = rb_str_new((char*)out_ptr,out_length);
|
9116
9159
|
ruby_xfree( out_ptr );
|
9117
9160
|
out_ptr = NULL;
|
9118
|
-
|
9161
|
+
data->return_value = return_value;
|
9119
9162
|
return return_value;
|
9120
9163
|
default:
|
9121
9164
|
break;
|
@@ -9126,10 +9169,12 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9126
9169
|
rc = _ruby_ibm_db_get_data(stmt_res, col_num+1, SQL_C_BINARY, NULL, 0, (SQLINTEGER *)&in_length);
|
9127
9170
|
|
9128
9171
|
if ( rc == SQL_ERROR ) {
|
9172
|
+
data->return_value = Qfalse;
|
9129
9173
|
return Qfalse;
|
9130
9174
|
}
|
9131
9175
|
|
9132
9176
|
if (in_length == SQL_NULL_DATA) {
|
9177
|
+
data->return_value = Qnil;
|
9133
9178
|
return Qnil;
|
9134
9179
|
}
|
9135
9180
|
|
@@ -9138,6 +9183,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9138
9183
|
|
9139
9184
|
if ( out_ptr == NULL ) {
|
9140
9185
|
rb_warn( "Failed to Allocate Memory for LOB Data" );
|
9186
|
+
data->return_value = Qnil;
|
9141
9187
|
return Qnil;
|
9142
9188
|
}
|
9143
9189
|
|
@@ -9146,6 +9192,7 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9146
9192
|
if (rc == SQL_ERROR) {
|
9147
9193
|
ruby_xfree( out_ptr );
|
9148
9194
|
out_ptr = NULL;
|
9195
|
+
data->return_value = Qfalse;
|
9149
9196
|
return Qfalse;
|
9150
9197
|
}
|
9151
9198
|
|
@@ -9157,13 +9204,14 @@ static VALUE _ruby_ibm_db_result_helper(ibm_db_result_args *data) {
|
|
9157
9204
|
|
9158
9205
|
ruby_xfree( out_ptr );
|
9159
9206
|
out_ptr = NULL;
|
9160
|
-
|
9207
|
+
data->return_value = return_value;
|
9161
9208
|
return return_value;
|
9162
9209
|
|
9163
9210
|
default:
|
9164
9211
|
break;
|
9165
9212
|
}
|
9166
9213
|
|
9214
|
+
data->return_value = Qfalse;
|
9167
9215
|
return Qfalse;
|
9168
9216
|
}
|
9169
9217
|
/* }}} */
|
@@ -9208,10 +9256,10 @@ VALUE ibm_db_result(int argc, VALUE *argv, VALUE self)
|
|
9208
9256
|
if ( !NIL_P( stmt ) ) {
|
9209
9257
|
Data_Get_Struct(stmt, stmt_handle, result_args->stmt_res);
|
9210
9258
|
|
9211
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
9212
|
-
|
9213
|
-
ret_val = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_result_helper, result_args,
|
9259
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
9260
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_result_helper, result_args,
|
9214
9261
|
(void *)_ruby_ibm_db_Statement_level_UBF, result_args->stmt_res );
|
9262
|
+
ret_val = result_args->return_value;
|
9215
9263
|
#else
|
9216
9264
|
ret_val = _ruby_ibm_db_result_helper( result_args );
|
9217
9265
|
#endif
|
@@ -9287,6 +9335,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9287
9335
|
*(data->error) = rb_str_new2("Column information cannot be retrieved: <error message could not be retrieved>");
|
9288
9336
|
#endif
|
9289
9337
|
}
|
9338
|
+
data->return_value = Qnil;
|
9290
9339
|
return Qnil;
|
9291
9340
|
}
|
9292
9341
|
}
|
@@ -9311,6 +9360,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9311
9360
|
*(data->error) = rb_str_new2("Column binding cannot be done: <error message could not be retrieved>");
|
9312
9361
|
#endif
|
9313
9362
|
}
|
9363
|
+
data->return_value = Qnil;
|
9314
9364
|
return Qnil;
|
9315
9365
|
}
|
9316
9366
|
}
|
@@ -9360,6 +9410,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9360
9410
|
#else
|
9361
9411
|
*(data->error) = rb_str_new2("Requested row number must be a positive value");
|
9362
9412
|
#endif
|
9413
|
+
data->return_value = Qnil;
|
9363
9414
|
return Qnil;
|
9364
9415
|
} else {
|
9365
9416
|
/*row_number is NULL or 0; just fetch next row*/
|
@@ -9378,6 +9429,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9378
9429
|
}
|
9379
9430
|
|
9380
9431
|
if (rc == SQL_NO_DATA_FOUND) {
|
9432
|
+
data->return_value = Qfalse;
|
9381
9433
|
return Qfalse;
|
9382
9434
|
} else if ( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
9383
9435
|
_ruby_ibm_db_check_sql_errors( stmt_res, DB_STMT, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1, NULL, NULL, -1, 1, 0 );
|
@@ -9397,6 +9449,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9397
9449
|
*(data->error) = rb_str_new2("Fetch Failure: <error message could not be retrieved>");
|
9398
9450
|
#endif
|
9399
9451
|
}
|
9452
|
+
data->return_value = Qnil;
|
9400
9453
|
return Qnil;
|
9401
9454
|
}
|
9402
9455
|
/* copy the data over return_value */
|
@@ -9484,6 +9537,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9484
9537
|
out_ptr = (SQLPOINTER)ALLOC_N(char, tmp_length+1);
|
9485
9538
|
if ( out_ptr == NULL ) {
|
9486
9539
|
rb_warn( "Failed to allocate Memory");
|
9540
|
+
data->return_value = Qnil;
|
9487
9541
|
return Qnil;
|
9488
9542
|
}
|
9489
9543
|
memset(out_ptr,'\0',tmp_length+1);
|
@@ -9492,6 +9546,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9492
9546
|
if ( rc == SQL_ERROR ) {
|
9493
9547
|
ruby_xfree( out_ptr );
|
9494
9548
|
out_ptr = NULL;
|
9549
|
+
data->return_value = Qfalse;
|
9495
9550
|
return Qfalse;
|
9496
9551
|
}
|
9497
9552
|
if (out_length == SQL_NULL_DATA) {
|
@@ -9536,6 +9591,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9536
9591
|
|
9537
9592
|
if(tmpStr == NULL ){
|
9538
9593
|
rb_warn( "Failed to Allocate Memory for Decimal Data" );
|
9594
|
+
data->return_value = Qnil;
|
9539
9595
|
return Qnil;
|
9540
9596
|
}
|
9541
9597
|
|
@@ -9674,6 +9730,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9674
9730
|
ruby_xfree( out_ptr );
|
9675
9731
|
out_ptr = NULL;
|
9676
9732
|
out_length = 0;
|
9733
|
+
data->return_value = Qfalse;
|
9677
9734
|
return Qfalse;
|
9678
9735
|
}
|
9679
9736
|
|
@@ -9725,6 +9782,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9725
9782
|
*(data->error) = rb_str_new2("Failed to Determine XML Size: <error message could not be retrieved>");
|
9726
9783
|
#endif
|
9727
9784
|
}
|
9785
|
+
data->return_value = Qnil;
|
9728
9786
|
return Qnil;
|
9729
9787
|
}
|
9730
9788
|
|
@@ -9744,6 +9802,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9744
9802
|
|
9745
9803
|
if ( out_ptr == NULL ) {
|
9746
9804
|
rb_warn( "Failed to Allocate Memory for XML Data" );
|
9805
|
+
data->return_value = Qnil;
|
9747
9806
|
return Qnil;
|
9748
9807
|
}
|
9749
9808
|
|
@@ -9751,6 +9810,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9751
9810
|
if (rc == SQL_ERROR) {
|
9752
9811
|
ruby_xfree( out_ptr );
|
9753
9812
|
out_ptr = NULL;
|
9813
|
+
data->return_value = Qfalse;
|
9754
9814
|
return Qfalse;
|
9755
9815
|
}
|
9756
9816
|
|
@@ -9812,6 +9872,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9812
9872
|
|
9813
9873
|
if ( out_ptr == NULL ) {
|
9814
9874
|
rb_warn( "Failed to Allocate Memory for LOB Data" );
|
9875
|
+
data->return_value = Qnil;
|
9815
9876
|
return Qnil;
|
9816
9877
|
}
|
9817
9878
|
|
@@ -9824,6 +9885,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9824
9885
|
ruby_xfree( out_ptr );
|
9825
9886
|
out_ptr = NULL;
|
9826
9887
|
out_length = 0;
|
9888
|
+
data->return_value = Qfalse;
|
9827
9889
|
return Qfalse;
|
9828
9890
|
}
|
9829
9891
|
|
@@ -9858,6 +9920,7 @@ static VALUE _ruby_ibm_db_bind_fetch_helper(ibm_db_fetch_helper_args *data)
|
|
9858
9920
|
}
|
9859
9921
|
}
|
9860
9922
|
|
9923
|
+
data->return_value = return_value;
|
9861
9924
|
return return_value;
|
9862
9925
|
}
|
9863
9926
|
/*
|
@@ -9896,6 +9959,7 @@ static int _ruby_ibm_db_fetch_row_helper( ibm_db_fetch_helper_args *data) {
|
|
9896
9959
|
*(data->error) = rb_str_new2("Column information cannot be retrieved: <error message could not be retrieved>");
|
9897
9960
|
#endif
|
9898
9961
|
}
|
9962
|
+
data->return_value = Qnil;
|
9899
9963
|
return Qnil;
|
9900
9964
|
}
|
9901
9965
|
}
|
@@ -9932,6 +9996,7 @@ static int _ruby_ibm_db_fetch_row_helper( ibm_db_fetch_helper_args *data) {
|
|
9932
9996
|
#else
|
9933
9997
|
*(data->error) = rb_str_new2("Requested row number must be a positive value");
|
9934
9998
|
#endif
|
9999
|
+
data->return_value = Qnil;
|
9935
10000
|
return Qnil;
|
9936
10001
|
} else {
|
9937
10002
|
/*row_number is NULL or 0; just fetch next row*/
|
@@ -9952,7 +10017,7 @@ static int _ruby_ibm_db_fetch_row_helper( ibm_db_fetch_helper_args *data) {
|
|
9952
10017
|
ret_val = Qfalse;
|
9953
10018
|
}
|
9954
10019
|
}
|
9955
|
-
|
10020
|
+
data->return_value = ret_val;
|
9956
10021
|
return ret_val;
|
9957
10022
|
}
|
9958
10023
|
/* */
|
@@ -10012,10 +10077,10 @@ VALUE ibm_db_fetch_row(int argc, VALUE *argv, VALUE self)
|
|
10012
10077
|
helper_args->arg_count = argc;
|
10013
10078
|
helper_args->error = &error;
|
10014
10079
|
|
10015
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
10016
|
-
|
10017
|
-
ret_val = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_fetch_row_helper, helper_args,
|
10080
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
10081
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_fetch_row_helper, helper_args,
|
10018
10082
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
10083
|
+
ret_val = helper_args->return_value;
|
10019
10084
|
#else
|
10020
10085
|
ret_val = _ruby_ibm_db_fetch_row_helper( helper_args );
|
10021
10086
|
#endif
|
@@ -10181,14 +10246,15 @@ VALUE ibm_db_fetch_assoc(int argc, VALUE *argv, VALUE self) {
|
|
10181
10246
|
helper_args->error = &error;
|
10182
10247
|
helper_args->funcType = FETCH_ASSOC;
|
10183
10248
|
|
10184
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
10185
|
-
|
10186
|
-
ret_val = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10249
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
10250
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10187
10251
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
10252
|
+
ret_val = helper_args->return_value;
|
10253
|
+
|
10188
10254
|
#else
|
10189
10255
|
ret_val = _ruby_ibm_db_bind_fetch_helper( helper_args );
|
10190
10256
|
#endif
|
10191
|
-
|
10257
|
+
|
10192
10258
|
/*Free Memory Allocated*/
|
10193
10259
|
if ( helper_args != NULL) {
|
10194
10260
|
ruby_xfree( helper_args );
|
@@ -10269,10 +10335,10 @@ VALUE ibm_db_fetch_object(int argc, VALUE *argv, VALUE self)
|
|
10269
10335
|
helper_args->error = &error;
|
10270
10336
|
helper_args->funcType = FETCH_ASSOC;
|
10271
10337
|
|
10272
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
10273
|
-
|
10274
|
-
row_res->hash = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10338
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
10339
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10275
10340
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
10341
|
+
row_res->hash = helper_args->return_value;
|
10276
10342
|
#else
|
10277
10343
|
row_res->hash = _ruby_ibm_db_bind_fetch_helper( helper_args );
|
10278
10344
|
#endif
|
@@ -10295,7 +10361,7 @@ VALUE ibm_db_fetch_object(int argc, VALUE *argv, VALUE self)
|
|
10295
10361
|
ruby_xfree( row_res );
|
10296
10362
|
row_res = NULL;
|
10297
10363
|
return Qfalse;
|
10298
|
-
}
|
10364
|
+
}
|
10299
10365
|
}
|
10300
10366
|
/* */
|
10301
10367
|
|
@@ -10352,10 +10418,11 @@ VALUE ibm_db_fetch_array(int argc, VALUE *argv, VALUE self)
|
|
10352
10418
|
helper_args->error = &error;
|
10353
10419
|
helper_args->funcType = FETCH_INDEX;
|
10354
10420
|
|
10355
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
10356
|
-
|
10357
|
-
ret_val = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10421
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
10422
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10358
10423
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
10424
|
+
ret_val = helper_args->return_value;
|
10425
|
+
|
10359
10426
|
#else
|
10360
10427
|
ret_val = _ruby_ibm_db_bind_fetch_helper( helper_args );
|
10361
10428
|
#endif
|
@@ -10429,10 +10496,10 @@ VALUE ibm_db_fetch_both(int argc, VALUE *argv, VALUE self)
|
|
10429
10496
|
helper_args->error = &error;
|
10430
10497
|
helper_args->funcType = FETCH_BOTH;
|
10431
10498
|
|
10432
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
10433
|
-
|
10434
|
-
ret_val = ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10499
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
10500
|
+
ibm_Ruby_Thread_Call ( (void *)_ruby_ibm_db_bind_fetch_helper, helper_args,
|
10435
10501
|
(void *)_ruby_ibm_db_Statement_level_UBF, stmt_res );
|
10502
|
+
ret_val = helper_args->return_value;
|
10436
10503
|
#else
|
10437
10504
|
ret_val = _ruby_ibm_db_bind_fetch_helper( helper_args );
|
10438
10505
|
#endif
|
@@ -10523,7 +10590,7 @@ VALUE ibm_db_set_option(int argc, VALUE *argv, VALUE self)
|
|
10523
10590
|
/*
|
10524
10591
|
Retrieves the server information by calling the SQLGetInfo_helper function and wraps it up into server_info object
|
10525
10592
|
*/
|
10526
|
-
static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
10593
|
+
static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
10527
10594
|
conn_handle *conn_res = NULL;
|
10528
10595
|
|
10529
10596
|
int rc = 0;
|
@@ -10558,6 +10625,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10558
10625
|
|
10559
10626
|
if ( rc == SQL_ERROR ) {
|
10560
10627
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10628
|
+
getInfo_args->return_value = Qfalse;
|
10561
10629
|
return Qfalse;
|
10562
10630
|
} else {
|
10563
10631
|
|
@@ -10576,9 +10644,9 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10576
10644
|
|
10577
10645
|
memset(buffer11, '\0', sizeof(buffer11));
|
10578
10646
|
rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
|
10579
|
-
|
10580
10647
|
if ( rc == SQL_ERROR ) {
|
10581
10648
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10649
|
+
getInfo_args->return_value = Qfalse;
|
10582
10650
|
return Qfalse;
|
10583
10651
|
} else {
|
10584
10652
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10587,7 +10655,6 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10587
10655
|
rb_iv_set(return_value, "@DBMS_VER", rb_str_new2(buffer11));
|
10588
10656
|
#endif
|
10589
10657
|
}
|
10590
|
-
|
10591
10658
|
#ifndef PASE /* i5/OS DB_CODEPAGE handled natively */
|
10592
10659
|
/* DB_CODEPAGE */
|
10593
10660
|
bufferint32 = 0;
|
@@ -10601,6 +10668,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10601
10668
|
|
10602
10669
|
if ( rc == SQL_ERROR ) {
|
10603
10670
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10671
|
+
getInfo_args->return_value = Qfalse;
|
10604
10672
|
return Qfalse;
|
10605
10673
|
} else {
|
10606
10674
|
rb_iv_set(return_value, "@DB_CODEPAGE", INT2NUM(bufferint32));
|
@@ -10618,6 +10686,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10618
10686
|
|
10619
10687
|
if ( rc == SQL_ERROR ) {
|
10620
10688
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10689
|
+
getInfo_args->return_value = Qfalse;
|
10621
10690
|
return Qfalse;
|
10622
10691
|
} else {
|
10623
10692
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10639,6 +10708,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10639
10708
|
|
10640
10709
|
if ( rc == SQL_ERROR ) {
|
10641
10710
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10711
|
+
getInfo_args->return_value = Qfalse;
|
10642
10712
|
return Qfalse;
|
10643
10713
|
} else {
|
10644
10714
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10659,6 +10729,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10659
10729
|
|
10660
10730
|
if ( rc == SQL_ERROR ) {
|
10661
10731
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10732
|
+
getInfo_args->return_value = Qfalse;
|
10662
10733
|
return Qfalse;
|
10663
10734
|
} else {
|
10664
10735
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10680,10 +10751,10 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10680
10751
|
|
10681
10752
|
if ( rc == SQL_ERROR ) {
|
10682
10753
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10754
|
+
getInfo_args->return_value = Qfalse;
|
10683
10755
|
return Qfalse;
|
10684
10756
|
} else {
|
10685
10757
|
VALUE keywordsStr, keywordsArray;
|
10686
|
-
|
10687
10758
|
#ifdef UNICODE_SUPPORT_VERSION
|
10688
10759
|
keywordsStr = _ruby_ibm_db_export_sqlwchar_to_utf8_rstr(buffer3k, out_length);
|
10689
10760
|
keywordsArray = rb_str_split(keywordsStr, RSTRING_PTR(_ruby_ibm_db_export_char_to_utf8_rstr(",")) );
|
@@ -10691,7 +10762,6 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10691
10762
|
keywordsStr = rb_str_new2( buffer3k );
|
10692
10763
|
keywordsArray = rb_str_split(keywordsStr, ",");
|
10693
10764
|
#endif
|
10694
|
-
|
10695
10765
|
rb_iv_set(return_value, "@KEYWORDS", keywordsArray);
|
10696
10766
|
}
|
10697
10767
|
|
@@ -10706,6 +10776,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10706
10776
|
|
10707
10777
|
if ( rc == SQL_ERROR ) {
|
10708
10778
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10779
|
+
getInfo_args->return_value = Qfalse;
|
10709
10780
|
return Qfalse;
|
10710
10781
|
} else {
|
10711
10782
|
VALUE dft_isolation = Qnil;
|
@@ -10744,10 +10815,8 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10744
10815
|
dft_isolation = rb_str_new2("NC");
|
10745
10816
|
#endif
|
10746
10817
|
}
|
10747
|
-
|
10748
10818
|
rb_iv_set(return_value, "@DFT_ISOLATION", dft_isolation);
|
10749
10819
|
}
|
10750
|
-
|
10751
10820
|
#ifndef PASE /* i5/OS ISOLATION_OPTION handled natively */
|
10752
10821
|
/* ISOLATION_OPTION */
|
10753
10822
|
getInfo_args->infoType = SQL_TXN_ISOLATION_OPTION;
|
@@ -10757,15 +10826,14 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10757
10826
|
|
10758
10827
|
bitmask = 0;
|
10759
10828
|
rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
|
10760
|
-
|
10761
10829
|
if ( rc == SQL_ERROR ) {
|
10762
10830
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10831
|
+
getInfo_args->return_value = Qfalse;
|
10763
10832
|
return Qfalse;
|
10764
10833
|
} else {
|
10765
10834
|
VALUE array;
|
10766
10835
|
|
10767
10836
|
array = rb_ary_new();
|
10768
|
-
|
10769
10837
|
if( bitmask & SQL_TXN_READ_UNCOMMITTED ) {
|
10770
10838
|
#ifdef UNICODE_SUPPORT_VERSION
|
10771
10839
|
rb_ary_push(array, _ruby_ibm_db_export_char_to_utf8_rstr("UR"));
|
@@ -10801,7 +10869,6 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10801
10869
|
rb_ary_push(array, rb_str_new2("NC"));
|
10802
10870
|
#endif
|
10803
10871
|
}
|
10804
|
-
|
10805
10872
|
rb_iv_set(return_value, "@ISOLATION_OPTION", array);
|
10806
10873
|
}
|
10807
10874
|
#endif /* PASE */
|
@@ -10814,9 +10881,9 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10814
10881
|
|
10815
10882
|
bufferint32 = 0;
|
10816
10883
|
rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
|
10817
|
-
|
10818
10884
|
if ( rc == SQL_ERROR ) {
|
10819
10885
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10886
|
+
getInfo_args->return_value = Qfalse;
|
10820
10887
|
return Qfalse;
|
10821
10888
|
} else {
|
10822
10889
|
VALUE conformance = Qnil;
|
@@ -10863,9 +10930,9 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10863
10930
|
|
10864
10931
|
memset(buffer11, '\0', sizeof(buffer11));
|
10865
10932
|
rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
|
10866
|
-
|
10867
10933
|
if ( rc == SQL_ERROR ) {
|
10868
10934
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10935
|
+
getInfo_args->return_value = Qfalse;
|
10869
10936
|
return Qfalse;
|
10870
10937
|
} else {
|
10871
10938
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10878,7 +10945,6 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10878
10945
|
rb_iv_set(return_value, "@PROCEDURES", Qfalse);
|
10879
10946
|
}
|
10880
10947
|
}
|
10881
|
-
|
10882
10948
|
/* IDENTIFIER_QUOTE_CHAR */
|
10883
10949
|
getInfo_args->infoType = SQL_IDENTIFIER_QUOTE_CHAR;
|
10884
10950
|
getInfo_args->infoValue = (SQLPOINTER)buffer11;
|
@@ -10890,6 +10956,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10890
10956
|
|
10891
10957
|
if ( rc == SQL_ERROR ) {
|
10892
10958
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10959
|
+
getInfo_args->return_value = Qfalse;
|
10893
10960
|
return Qfalse;
|
10894
10961
|
} else {
|
10895
10962
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10910,6 +10977,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10910
10977
|
|
10911
10978
|
if ( rc == SQL_ERROR ) {
|
10912
10979
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
10980
|
+
getInfo_args->return_value = Qfalse;
|
10913
10981
|
return Qfalse;
|
10914
10982
|
} else {
|
10915
10983
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -10929,11 +10997,10 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10929
10997
|
getInfo_args->buff_length = sizeof( bufferint16 );
|
10930
10998
|
out_length = 0;
|
10931
10999
|
bufferint16 = 0;
|
10932
|
-
|
10933
11000
|
rc = _ruby_ibm_db_SQLGetInfo_helper( getInfo_args );
|
10934
|
-
|
10935
11001
|
if ( rc == SQL_ERROR ) {
|
10936
11002
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11003
|
+
getInfo_args->return_value = Qfalse;
|
10937
11004
|
return Qfalse;
|
10938
11005
|
} else {
|
10939
11006
|
rb_iv_set(return_value, "@MAX_COL_NAME_LEN", INT2NUM(bufferint16));
|
@@ -10950,11 +11017,11 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10950
11017
|
|
10951
11018
|
if ( rc == SQL_ERROR ) {
|
10952
11019
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11020
|
+
getInfo_args->return_value = Qfalse;
|
10953
11021
|
return Qfalse;
|
10954
11022
|
} else {
|
10955
11023
|
rb_iv_set(return_value, "@MAX_ROW_SIZE", INT2NUM(bufferint32));
|
10956
11024
|
}
|
10957
|
-
|
10958
11025
|
#ifndef PASE /* i5/OS MAX_IDENTIFIER_LEN handled natively */
|
10959
11026
|
/* MAX_IDENTIFIER_LEN */
|
10960
11027
|
getInfo_args->infoType = SQL_MAX_IDENTIFIER_LEN;
|
@@ -10967,6 +11034,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10967
11034
|
|
10968
11035
|
if ( rc == SQL_ERROR ) {
|
10969
11036
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11037
|
+
getInfo_args->return_value = Qfalse;
|
10970
11038
|
return Qfalse;
|
10971
11039
|
} else {
|
10972
11040
|
rb_iv_set(return_value, "@MAX_IDENTIFIER_LEN", INT2NUM(bufferint16));
|
@@ -10983,6 +11051,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10983
11051
|
|
10984
11052
|
if ( rc == SQL_ERROR ) {
|
10985
11053
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11054
|
+
getInfo_args->return_value = Qfalse;
|
10986
11055
|
return Qfalse;
|
10987
11056
|
} else {
|
10988
11057
|
rb_iv_set(return_value, "@MAX_INDEX_SIZE", INT2NUM(bufferint32));
|
@@ -10999,6 +11068,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
10999
11068
|
|
11000
11069
|
if ( rc == SQL_ERROR ) {
|
11001
11070
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11071
|
+
getInfo_args->return_value = Qfalse;
|
11002
11072
|
return Qfalse;
|
11003
11073
|
} else {
|
11004
11074
|
rb_iv_set(return_value, "@MAX_PROC_NAME_LEN", INT2NUM(bufferint16));
|
@@ -11016,6 +11086,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
11016
11086
|
|
11017
11087
|
if ( rc == SQL_ERROR ) {
|
11018
11088
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11089
|
+
getInfo_args->return_value = Qfalse;
|
11019
11090
|
return Qfalse;
|
11020
11091
|
} else {
|
11021
11092
|
rb_iv_set(return_value, "@MAX_SCHEMA_NAME_LEN", INT2NUM(bufferint16));
|
@@ -11032,6 +11103,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
11032
11103
|
|
11033
11104
|
if ( rc == SQL_ERROR ) {
|
11034
11105
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11106
|
+
getInfo_args->return_value = Qfalse;
|
11035
11107
|
return Qfalse;
|
11036
11108
|
} else {
|
11037
11109
|
rb_iv_set(return_value, "@MAX_STATEMENT_LEN", INT2NUM(bufferint32));
|
@@ -11048,6 +11120,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
11048
11120
|
|
11049
11121
|
if ( rc == SQL_ERROR ) {
|
11050
11122
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11123
|
+
getInfo_args->return_value = Qfalse;
|
11051
11124
|
return Qfalse;
|
11052
11125
|
} else {
|
11053
11126
|
rb_iv_set(return_value, "@MAX_TABLE_NAME_LEN", INT2NUM(bufferint16));
|
@@ -11064,6 +11137,7 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
11064
11137
|
|
11065
11138
|
if ( rc == SQL_ERROR ) {
|
11066
11139
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11140
|
+
getInfo_args->return_value = Qfalse;
|
11067
11141
|
return Qfalse;
|
11068
11142
|
} else {
|
11069
11143
|
VALUE rv = Qnil;
|
@@ -11080,6 +11154,8 @@ static VALUE ibm_db_server_info_helper( get_info_args *getInfo_args ) {
|
|
11080
11154
|
rb_iv_set(return_value, "@NON_NULLABLE_COLUMNS", rv);
|
11081
11155
|
}
|
11082
11156
|
|
11157
|
+
getInfo_args->return_value=return_value;
|
11158
|
+
|
11083
11159
|
return return_value;
|
11084
11160
|
}
|
11085
11161
|
/* */
|
@@ -11163,28 +11239,34 @@ VALUE ibm_db_server_info(int argc, VALUE *argv, VALUE self)
|
|
11163
11239
|
get_info_args *getInfo_args = NULL;
|
11164
11240
|
|
11165
11241
|
rb_scan_args(argc, argv, "1", &connection);
|
11242
|
+
|
11243
|
+
|
11244
|
+
if(NIL_P(&connection))
|
11245
|
+
{
|
11246
|
+
}
|
11247
|
+
if(&connection == NULL)
|
11248
|
+
{
|
11249
|
+
}
|
11166
11250
|
|
11167
11251
|
if (!NIL_P(connection)) {
|
11168
11252
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
11169
|
-
|
11170
|
-
if (!conn_res->handle_active) {
|
11253
|
+
|
11254
|
+
if (!conn_res || !conn_res->handle_active) {
|
11171
11255
|
rb_warn("Connection is not active");
|
11172
11256
|
return Qfalse;
|
11173
11257
|
}
|
11174
|
-
|
11175
11258
|
getInfo_args = ALLOC( get_info_args );
|
11176
11259
|
memset(getInfo_args,'\0',sizeof(struct _ibm_db_get_info_struct));
|
11177
|
-
|
11260
|
+
|
11178
11261
|
getInfo_args->conn_res = conn_res;
|
11179
11262
|
getInfo_args->out_length = NULL;
|
11180
11263
|
getInfo_args->infoType = 0;
|
11181
11264
|
getInfo_args->infoValue = NULL;
|
11182
11265
|
getInfo_args->buff_length = 0;
|
11183
|
-
|
11184
11266
|
#ifdef UNICODE_SUPPORT_VERSION
|
11185
|
-
|
11186
|
-
return_value = ibm_Ruby_Thread_Call ( (void *)ibm_db_server_info_helper, getInfo_args,
|
11267
|
+
ibm_Ruby_Thread_Call ( (void *)ibm_db_server_info_helper, getInfo_args,
|
11187
11268
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
11269
|
+
return_value = getInfo_args->return_value;
|
11188
11270
|
#else
|
11189
11271
|
return_value = ibm_db_server_info_helper( getInfo_args );
|
11190
11272
|
#endif
|
@@ -11232,6 +11314,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11232
11314
|
|
11233
11315
|
if ( rc == SQL_ERROR ) {
|
11234
11316
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11317
|
+
getInfo_args->return_value = Qfalse;
|
11235
11318
|
return Qfalse;
|
11236
11319
|
} else {
|
11237
11320
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -11252,6 +11335,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11252
11335
|
|
11253
11336
|
if ( rc == SQL_ERROR ) {
|
11254
11337
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11338
|
+
getInfo_args->return_value = Qfalse;
|
11255
11339
|
return Qfalse;
|
11256
11340
|
} else {
|
11257
11341
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -11272,6 +11356,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11272
11356
|
|
11273
11357
|
if ( rc == SQL_ERROR ) {
|
11274
11358
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11359
|
+
getInfo_args->return_value = Qfalse;
|
11275
11360
|
return Qfalse;
|
11276
11361
|
} else {
|
11277
11362
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -11292,6 +11377,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11292
11377
|
|
11293
11378
|
if ( rc == SQL_ERROR ) {
|
11294
11379
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11380
|
+
getInfo_args->return_value = Qfalse;
|
11295
11381
|
return Qfalse;
|
11296
11382
|
} else {
|
11297
11383
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -11313,6 +11399,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11313
11399
|
|
11314
11400
|
if ( rc == SQL_ERROR ) {
|
11315
11401
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11402
|
+
getInfo_args->return_value = Qfalse;
|
11316
11403
|
return Qfalse;
|
11317
11404
|
} else {
|
11318
11405
|
#ifdef UNICODE_SUPPORT_VERSION
|
@@ -11334,6 +11421,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11334
11421
|
|
11335
11422
|
if ( rc == SQL_ERROR ) {
|
11336
11423
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11424
|
+
getInfo_args->return_value = Qfalse;
|
11337
11425
|
return Qfalse;
|
11338
11426
|
} else {
|
11339
11427
|
VALUE conformance = Qnil;
|
@@ -11377,6 +11465,7 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11377
11465
|
|
11378
11466
|
if ( rc == SQL_ERROR ) {
|
11379
11467
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11468
|
+
getInfo_args->return_value = Qfalse;
|
11380
11469
|
return Qfalse;
|
11381
11470
|
} else {
|
11382
11471
|
rb_iv_set(return_value, "@APPL_CODEPAGE", INT2NUM(bufferint32));
|
@@ -11393,12 +11482,14 @@ static VALUE ibm_db_client_info_helper( get_info_args *getInfo_args) {
|
|
11393
11482
|
|
11394
11483
|
if ( rc == SQL_ERROR ) {
|
11395
11484
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 0 );
|
11485
|
+
getInfo_args->return_value = Qfalse;
|
11396
11486
|
return Qfalse;
|
11397
11487
|
} else {
|
11398
11488
|
rb_iv_set(return_value, "@CONN_CODEPAGE", INT2NUM(bufferint32));
|
11399
11489
|
}
|
11400
11490
|
#endif /* PASE */
|
11401
11491
|
|
11492
|
+
getInfo_args->return_value = return_value;
|
11402
11493
|
return return_value;
|
11403
11494
|
}
|
11404
11495
|
/* */
|
@@ -11455,7 +11546,7 @@ VALUE ibm_db_client_info(int argc, VALUE *argv, VALUE self)
|
|
11455
11546
|
if (!NIL_P(connection)) {
|
11456
11547
|
Data_Get_Struct(connection, conn_handle, conn_res);
|
11457
11548
|
|
11458
|
-
if (!conn_res->handle_active) {
|
11549
|
+
if (!conn_res || !conn_res->handle_active) {
|
11459
11550
|
rb_warn("Connection is not active");
|
11460
11551
|
return Qfalse;
|
11461
11552
|
}
|
@@ -11469,10 +11560,11 @@ VALUE ibm_db_client_info(int argc, VALUE *argv, VALUE self)
|
|
11469
11560
|
getInfo_args->infoValue = NULL;
|
11470
11561
|
getInfo_args->buff_length = 0;
|
11471
11562
|
|
11472
|
-
#ifdef UNICODE_SUPPORT_VERSION
|
11473
|
-
|
11474
|
-
return_value = ibm_Ruby_Thread_Call ( (void *)ibm_db_client_info_helper, getInfo_args,
|
11563
|
+
#ifdef UNICODE_SUPPORT_VERSION
|
11564
|
+
ibm_Ruby_Thread_Call ( (void *)ibm_db_client_info_helper, getInfo_args,
|
11475
11565
|
(void *)_ruby_ibm_db_Connection_level_UBF, NULL);
|
11566
|
+
return_value = getInfo_args->return_value;
|
11567
|
+
|
11476
11568
|
#else
|
11477
11569
|
return_value = ibm_db_client_info_helper( getInfo_args );
|
11478
11570
|
#endif
|
@@ -11605,15 +11697,16 @@ VALUE ibm_db_get_option(int argc, VALUE *argv, VALUE self)
|
|
11605
11697
|
|
11606
11698
|
rb_scan_args(argc, argv, "3", &conn_or_stmt, &option, &r_type);
|
11607
11699
|
|
11700
|
+
|
11608
11701
|
if (!NIL_P(r_type)) type = NUM2LONG(r_type);
|
11702
|
+
|
11609
11703
|
|
11610
11704
|
if (!NIL_P(conn_or_stmt)) {
|
11611
11705
|
/* Checking to see if we are getting a connection option (1) or a statement option (non - 1) */
|
11612
11706
|
if (type == 1) {
|
11613
11707
|
Data_Get_Struct(conn_or_stmt, conn_handle, conn_res);
|
11614
|
-
|
11615
11708
|
/* Check to ensure the connection resource given is active */
|
11616
|
-
if (!conn_res->handle_active) {
|
11709
|
+
if (!conn_res || !conn_res->handle_active) {
|
11617
11710
|
rb_warn("Connection is not active");
|
11618
11711
|
return Qfalse;
|
11619
11712
|
}
|
@@ -11628,7 +11721,6 @@ VALUE ibm_db_get_option(int argc, VALUE *argv, VALUE self)
|
|
11628
11721
|
value = (SQLCHAR *)ALLOC_N(SQLCHAR, ACCTSTR_LEN + 1);
|
11629
11722
|
memset(value,'\0', ACCTSTR_LEN + 1);
|
11630
11723
|
#endif
|
11631
|
-
|
11632
11724
|
get_handleAttr_args = ALLOC( get_handle_attr_args );
|
11633
11725
|
memset(get_handleAttr_args,'\0',sizeof(struct _ibm_db_get_handle_attr_struct));
|
11634
11726
|
|
@@ -11641,12 +11733,10 @@ VALUE ibm_db_get_option(int argc, VALUE *argv, VALUE self)
|
|
11641
11733
|
get_handleAttr_args->buff_length = (ACCTSTR_LEN+1);
|
11642
11734
|
#endif
|
11643
11735
|
get_handleAttr_args->out_length = &out_length;
|
11644
|
-
|
11645
11736
|
rc = _ruby_ibm_db_SQLGetConnectAttr_helper( get_handleAttr_args );
|
11646
11737
|
|
11647
11738
|
ruby_xfree( get_handleAttr_args );
|
11648
11739
|
get_handleAttr_args = NULL;
|
11649
|
-
|
11650
11740
|
if (rc == SQL_ERROR) {
|
11651
11741
|
_ruby_ibm_db_check_sql_errors( conn_res, DB_CONN, conn_res->hdbc, SQL_HANDLE_DBC, rc, 1, NULL, NULL, -1, 1, 1 );
|
11652
11742
|
ret_val = Qfalse;
|
@@ -11667,7 +11757,6 @@ VALUE ibm_db_get_option(int argc, VALUE *argv, VALUE self)
|
|
11667
11757
|
/* At this point we know we are to retreive a statement option */
|
11668
11758
|
} else {
|
11669
11759
|
Data_Get_Struct(conn_or_stmt, stmt_handle, stmt_res);
|
11670
|
-
|
11671
11760
|
/* Check that the option given is not null */
|
11672
11761
|
if (!NIL_P(option)) {
|
11673
11762
|
op_integer=(SQLINTEGER)FIX2INT(option);
|
@@ -11681,17 +11770,14 @@ VALUE ibm_db_get_option(int argc, VALUE *argv, VALUE self)
|
|
11681
11770
|
get_handleAttr_args->valuePtr = &value_int;
|
11682
11771
|
get_handleAttr_args->buff_length = SQL_IS_INTEGER;
|
11683
11772
|
get_handleAttr_args->out_length = NULL;
|
11684
|
-
|
11685
11773
|
rc = _ruby_ibm_db_SQLGetStmtAttr_helper( get_handleAttr_args );
|
11686
11774
|
|
11687
11775
|
ruby_xfree( get_handleAttr_args );
|
11688
11776
|
get_handleAttr_args = NULL;
|
11689
|
-
|
11690
11777
|
if (rc == SQL_ERROR) {
|
11691
11778
|
_ruby_ibm_db_check_sql_errors( stmt_res, DB_STMT, stmt_res->hstmt, SQL_HANDLE_STMT, rc, 1, NULL, NULL, -1, 1, 1 );
|
11692
11779
|
return Qfalse;
|
11693
11780
|
}
|
11694
|
-
|
11695
11781
|
return INT2NUM(value_int);
|
11696
11782
|
} else {
|
11697
11783
|
rb_warn("Invalid option specified");
|
@@ -11706,7 +11792,7 @@ VALUE ibm_db_get_option(int argc, VALUE *argv, VALUE self)
|
|
11706
11792
|
} else {
|
11707
11793
|
rb_warn("Supplied resource handle is invalid");
|
11708
11794
|
return Qfalse;
|
11709
|
-
}
|
11795
|
+
}
|
11710
11796
|
}
|
11711
11797
|
|
11712
11798
|
|