ruby-odbc 0.99993 → 0.99994
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +4 -0
- data/README +2 -2
- data/ext/odbc.c +44 -23
- data/ext/utf8/odbc.c +2 -2
- data/ruby-odbc.gemspec +1 -1
- metadata +13 -5
data/ChangeLog
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
ODBC binding for Ruby
|
2
2
|
---------------------
|
3
3
|
|
4
|
+
Sat Jan 15 2011 version 0.99994 released
|
5
|
+
|
6
|
+
* fixed column key caching, thanks Sean Noonan for bug report
|
7
|
+
|
4
8
|
Fri Dec 24 2010 version 0.99993 released
|
5
9
|
|
6
10
|
* fixed error reporting in Database.transaction method,
|
data/README
CHANGED
data/ext/odbc.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* ODBC-Ruby binding
|
3
|
-
* Copyright (c) 2001-
|
3
|
+
* Copyright (c) 2001-2011 Christian Werner <chw@ch-werner.de>
|
4
4
|
* Portions copyright (c) 2004 Ryszard Niewisiewicz <micz@fibernet.pl>
|
5
5
|
* Portions copyright (c) 2006 Carl Blakeley <cblakeley@openlinksw.co.uk>
|
6
6
|
*
|
@@ -8,7 +8,7 @@
|
|
8
8
|
* and redistribution of this file and for a
|
9
9
|
* DISCLAIMER OF ALL WARRANTIES.
|
10
10
|
*
|
11
|
-
* $Id: odbc.c,v 1.
|
11
|
+
* $Id: odbc.c,v 1.72 2011/01/15 08:02:55 chw Exp chw $
|
12
12
|
*/
|
13
13
|
|
14
14
|
#undef ODBCVER
|
@@ -335,6 +335,14 @@ static VALUE stmt_each_hash(int argc, VALUE *argv, VALUE self);
|
|
335
335
|
static VALUE stmt_close(VALUE self);
|
336
336
|
static VALUE stmt_drop(VALUE self);
|
337
337
|
|
338
|
+
/*
|
339
|
+
* Column name buffers on statement.
|
340
|
+
*/
|
341
|
+
|
342
|
+
static const char *colnamebuf[] = {
|
343
|
+
"@_c0", "@_c1", "@_c2", "@_c3"
|
344
|
+
};
|
345
|
+
|
338
346
|
/*
|
339
347
|
* Macro to align buffers.
|
340
348
|
*/
|
@@ -800,20 +808,22 @@ free_dbc(DBC *p)
|
|
800
808
|
}
|
801
809
|
|
802
810
|
static void
|
803
|
-
free_stmt_sub(STMT *q)
|
811
|
+
free_stmt_sub(STMT *q, int withp)
|
804
812
|
{
|
805
|
-
|
806
|
-
int i;
|
813
|
+
int i;
|
807
814
|
|
808
|
-
|
809
|
-
|
810
|
-
|
815
|
+
if (withp) {
|
816
|
+
if (q->paraminfo != NULL) {
|
817
|
+
for (i = 0; i < q->nump; i++) {
|
818
|
+
if (q->paraminfo[i].outbuf != NULL) {
|
819
|
+
xfree(q->paraminfo[i].outbuf);
|
820
|
+
}
|
811
821
|
}
|
822
|
+
xfree(q->paraminfo);
|
823
|
+
q->paraminfo = NULL;
|
812
824
|
}
|
813
|
-
|
814
|
-
q->paraminfo = NULL;
|
825
|
+
q->nump = 0;
|
815
826
|
}
|
816
|
-
q->nump = 0;
|
817
827
|
q->ncols = 0;
|
818
828
|
if (q->coltypes != NULL) {
|
819
829
|
xfree(q->coltypes);
|
@@ -842,9 +852,11 @@ free_stmt_sub(STMT *q)
|
|
842
852
|
if (v != Qnil) {
|
843
853
|
rb_iv_set(q->self, "@_h", rb_hash_new());
|
844
854
|
}
|
845
|
-
|
846
|
-
|
847
|
-
|
855
|
+
for (i = 0; i < 4; i++) {
|
856
|
+
v = rb_iv_get(q->self, colnamebuf[i]);
|
857
|
+
if (v != Qnil) {
|
858
|
+
rb_iv_set(q->self, colnamebuf[i], rb_hash_new());
|
859
|
+
}
|
848
860
|
}
|
849
861
|
}
|
850
862
|
}
|
@@ -880,7 +892,7 @@ free_stmt(STMT *q)
|
|
880
892
|
VALUE qself = q->self;
|
881
893
|
|
882
894
|
q->self = q->dbc = Qnil;
|
883
|
-
free_stmt_sub(q);
|
895
|
+
free_stmt_sub(q, 1);
|
884
896
|
tracemsg(2, fprintf(stderr, "ObjFree: STMT %p\n", q););
|
885
897
|
if (q->hstmt != SQL_NULL_HSTMT) {
|
886
898
|
/* Issue warning message. */
|
@@ -3402,6 +3414,7 @@ wrap_stmt(VALUE dbc, DBC *p, SQLHSTMT hstmt, STMT **qp)
|
|
3402
3414
|
{
|
3403
3415
|
VALUE stmt = Qnil;
|
3404
3416
|
STMT *q;
|
3417
|
+
int i;
|
3405
3418
|
|
3406
3419
|
stmt = Data_Make_Struct(Cstmt, STMT, mark_stmt, free_stmt, q);
|
3407
3420
|
tracemsg(2, fprintf(stderr, "ObjAlloc: STMT %p\n", q););
|
@@ -3419,7 +3432,9 @@ wrap_stmt(VALUE dbc, DBC *p, SQLHSTMT hstmt, STMT **qp)
|
|
3419
3432
|
q->usef = 0;
|
3420
3433
|
rb_iv_set(q->self, "@_a", rb_ary_new());
|
3421
3434
|
rb_iv_set(q->self, "@_h", rb_hash_new());
|
3422
|
-
|
3435
|
+
for (i = 0; i < 4; i++) {
|
3436
|
+
rb_iv_set(q->self, colnamebuf[i], rb_hash_new());
|
3437
|
+
}
|
3423
3438
|
if (hstmt != SQL_NULL_HSTMT) {
|
3424
3439
|
link_stmt(q, p);
|
3425
3440
|
} else {
|
@@ -3479,7 +3494,7 @@ make_result(VALUE dbc, SQLHSTMT hstmt, VALUE result, int mode)
|
|
3479
3494
|
} else {
|
3480
3495
|
Data_Get_Struct(result, STMT, q);
|
3481
3496
|
retain_paraminfo_override(q, nump, paraminfo);
|
3482
|
-
free_stmt_sub(q);
|
3497
|
+
free_stmt_sub(q, 1);
|
3483
3498
|
if (q->dbc != dbc) {
|
3484
3499
|
unlink_stmt(q);
|
3485
3500
|
q->dbc = dbc;
|
@@ -5407,7 +5422,7 @@ stmt_drop(VALUE self)
|
|
5407
5422
|
q->hstmt = SQL_NULL_HSTMT;
|
5408
5423
|
unlink_stmt(q);
|
5409
5424
|
}
|
5410
|
-
free_stmt_sub(q);
|
5425
|
+
free_stmt_sub(q, 1);
|
5411
5426
|
return self;
|
5412
5427
|
}
|
5413
5428
|
|
@@ -5421,7 +5436,7 @@ stmt_close(VALUE self)
|
|
5421
5436
|
callsql(SQL_NULL_HENV, SQL_NULL_HDBC, q->hstmt,
|
5422
5437
|
SQLFreeStmt(q->hstmt, SQL_CLOSE), "SQLFreeStmt(SQL_CLOSE)");
|
5423
5438
|
}
|
5424
|
-
free_stmt_sub(q);
|
5439
|
+
free_stmt_sub(q, 1);
|
5425
5440
|
return self;
|
5426
5441
|
}
|
5427
5442
|
|
@@ -6078,16 +6093,20 @@ do_fetch(STMT *q, int mode)
|
|
6078
6093
|
q->colvals = ALLOC_N(VALUE, 4 * q->ncols);
|
6079
6094
|
if (q->colvals != NULL) {
|
6080
6095
|
VALUE cname;
|
6096
|
+
VALUE colbuf[4];
|
6081
6097
|
|
6082
6098
|
for (i = 0; i < 4 * q->ncols; i++) {
|
6083
6099
|
q->colvals[i] = Qnil;
|
6084
6100
|
}
|
6085
|
-
|
6086
|
-
|
6087
|
-
|
6088
|
-
|
6101
|
+
for (i = 0; i < 4; i++) {
|
6102
|
+
colbuf[i] = rb_iv_get(q->self, colnamebuf[i]);
|
6103
|
+
if (colbuf[i] == Qnil) {
|
6104
|
+
res = rb_hash_new();
|
6105
|
+
rb_iv_set(q->self, colnamebuf[i], res);
|
6106
|
+
}
|
6089
6107
|
}
|
6090
6108
|
for (i = 0; i < 4 * q->ncols; i++) {
|
6109
|
+
res = colbuf[i / q->ncols];
|
6091
6110
|
cname = rb_tainted_str_new2(q->colnames[i]);
|
6092
6111
|
#ifdef USE_RB_ENC
|
6093
6112
|
rb_enc_associate(cname, rb_enc);
|
@@ -6886,6 +6905,7 @@ stmt_more_results(VALUE self)
|
|
6886
6905
|
return Qfalse;
|
6887
6906
|
case SQL_SUCCESS:
|
6888
6907
|
case SQL_SUCCESS_WITH_INFO:
|
6908
|
+
free_stmt_sub(q, 0);
|
6889
6909
|
make_result(q->dbc, q->hstmt, self, 0);
|
6890
6910
|
break;
|
6891
6911
|
default:
|
@@ -6911,6 +6931,7 @@ stmt_prep_int(int argc, VALUE *argv, VALUE self, int mode)
|
|
6911
6931
|
|
6912
6932
|
if (rb_obj_is_kind_of(self, Cstmt) == Qtrue) {
|
6913
6933
|
Data_Get_Struct(self, STMT, q);
|
6934
|
+
free_stmt_sub(q, 0);
|
6914
6935
|
if (q->hstmt == SQL_NULL_HSTMT) {
|
6915
6936
|
if (!succeeded(SQL_NULL_HENV, p->hdbc, q->hstmt,
|
6916
6937
|
SQLAllocStmt(p->hdbc, &q->hstmt),
|
data/ext/utf8/odbc.c
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
/*
|
2
2
|
* ODBC-Ruby binding
|
3
|
-
* Copyright (c) 2001-
|
3
|
+
* Copyright (c) 2001-2011 Christian Werner <chw@ch-werner.de>
|
4
4
|
*
|
5
5
|
* See the file "COPYING" for information on usage
|
6
6
|
* and redistribution of this file and for a
|
7
7
|
* DISCLAIMER OF ALL WARRANTIES.
|
8
8
|
*
|
9
|
-
* $Id: odbc.c,v 1.
|
9
|
+
* $Id: odbc.c,v 1.6 2011/01/15 08:02:55 chw Exp chw $
|
10
10
|
*/
|
11
11
|
|
12
12
|
#undef UNICODE
|
data/ruby-odbc.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-odbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 99994
|
8
|
+
version: "0.99994"
|
5
9
|
platform: ruby
|
6
10
|
authors:
|
7
11
|
- Christian Werner
|
@@ -9,7 +13,7 @@ autorequire:
|
|
9
13
|
bindir: bin
|
10
14
|
cert_chain: []
|
11
15
|
|
12
|
-
date:
|
16
|
+
date: 2011-01-15 00:00:00 +01:00
|
13
17
|
default_executable:
|
14
18
|
dependencies: []
|
15
19
|
|
@@ -61,21 +65,25 @@ require_paths:
|
|
61
65
|
- lib
|
62
66
|
- lib
|
63
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
64
69
|
requirements:
|
65
70
|
- - ">="
|
66
71
|
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 0
|
67
74
|
version: "0"
|
68
|
-
version:
|
69
75
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
70
77
|
requirements:
|
71
78
|
- - ">="
|
72
79
|
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 0
|
73
82
|
version: "0"
|
74
|
-
version:
|
75
83
|
requirements: []
|
76
84
|
|
77
85
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.3.
|
86
|
+
rubygems_version: 1.3.7
|
79
87
|
signing_key:
|
80
88
|
specification_version: 3
|
81
89
|
summary: ODBC binding for Ruby
|