ruby-oci8 2.0.5 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,3 +1,12 @@
1
+ 2011-06-14 KUBO Takehiro <kubo@jiubao.org>
2
+ * NEWS: add changes between 2.0.5 and 2.0.6.
3
+ * VERSION: change the version to 2.0.6.
4
+ * ext/oci8/apiwrap.yml, ext/oci8/lob.c: fix SEGV when freeing a temporary
5
+ LOB during GC on rubinius 1.2.3.
6
+ * ext/oci8/oci8lib.c: revert the exception type from RuntimeError to
7
+ OCIException when a closed OCI handle's method is called.
8
+ It was chaned in 2.0.5 by mistake.
9
+
1
10
  2011-06-12 KUBO Takehiro <kubo@jiubao.org>
2
11
  * NEWS: add changes between 2.0.4 and 2.0.5.
3
12
  * VERSION: change the version to 2.0.5.
data/NEWS CHANGED
@@ -1,3 +1,13 @@
1
+ 2.0.6:
2
+
3
+ * Fixed issues
4
+
5
+ - fix SEGV when freeing a temporary LOB during GC on rubinius 1.2.3.
6
+
7
+ - revert the exception type from RuntimeError to OCIException when
8
+ a closed OCI handle's method is called. It was chaned in 2.0.5
9
+ by mistake.
10
+
1
11
  2.0.5:
2
12
 
3
13
  * New Features
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.5
1
+ 2.0.6
@@ -1019,7 +1019,7 @@ OCILobCreateTemporary_nb:
1019
1019
  - OCIDuration duration
1020
1020
 
1021
1021
  # round trip: 1
1022
- OCILobFreeTemporary_nb:
1022
+ OCILobFreeTemporary:
1023
1023
  :version: 810
1024
1024
  :args:
1025
1025
  - OCISvcCtx *svchp
@@ -3,7 +3,7 @@
3
3
  * attr.c
4
4
  *
5
5
  * $Author: kubo $
6
- * $Date: 2009-05-17 19:08:39 +0900 (日, 17 5月 2009) $
6
+ * $Date: 2009-05-17 19:08:39 +0900 (Sun, 17 May 2009) $
7
7
  *
8
8
  * Copyright (C) 2002-2007 KUBO Takehiro <kubo@jiubao.org>
9
9
  */
@@ -3,7 +3,7 @@
3
3
  * bind.c
4
4
  *
5
5
  * $Author: kubo $
6
- * $Date: 2010-12-14 20:30:44 +0900 (火, 14 12月 2010) $
6
+ * $Date: 2010-12-14 20:30:44 +0900 (Tue, 14 Dec 2010) $
7
7
  *
8
8
  * Copyright (C) 2002-2008 KUBO Takehiro <kubo@jiubao.org>
9
9
  */
@@ -23,6 +23,7 @@ enum state {
23
23
  typedef struct {
24
24
  oci8_base_t base;
25
25
  VALUE svc;
26
+ OCISvcCtx *svchp;
26
27
  ub4 pos;
27
28
  int char_width;
28
29
  ub1 csfrm;
@@ -96,28 +97,20 @@ static void oci8_lob_mark(oci8_base_t *base)
96
97
  rb_gc_mark(lob->svc);
97
98
  }
98
99
 
99
- static VALUE free_temp_lob(oci8_lob_t *lob)
100
- {
101
- oci8_svcctx_t *svcctx = oci8_get_svcctx(lob->svc);
102
-
103
- OCILobFreeTemporary_nb(svcctx, svcctx->base.hp.svc, oci8_errhp, lob->base.hp.lob);
104
- return Qnil;
105
- }
106
-
107
100
  static void oci8_lob_free(oci8_base_t *base)
108
101
  {
109
102
  oci8_lob_t *lob = (oci8_lob_t *)base;
110
103
  boolean is_temporary;
111
104
 
112
- if (have_OCILobIsTemporary
105
+ if (have_OCILobIsTemporary && lob->svchp != NULL
113
106
  && OCILobIsTemporary(oci8_envhp, oci8_errhp, lob->base.hp.lob, &is_temporary) == OCI_SUCCESS
114
107
  && is_temporary) {
115
- /* Exceptions in free_temp_lob() are ignored.
116
- * oci8_lob_free() is called in GC. It must not raise an exception.
117
- */
118
- rb_rescue(free_temp_lob, (VALUE)base, NULL, 0);
108
+
109
+ /* FIXME: This may stall the GC. */
110
+ OCILobFreeTemporary(lob->svchp, oci8_errhp, lob->base.hp.lob);
119
111
  }
120
112
  lob->svc = Qnil;
113
+ lob->svchp = NULL;
121
114
  }
122
115
 
123
116
  static oci8_base_class_t oci8_lob_class = {
@@ -191,6 +184,7 @@ static VALUE oci8_lob_do_initialize(int argc, VALUE *argv, VALUE self, ub1 csfrm
191
184
  oci8_env_raise(oci8_envhp, rv);
192
185
  lob->base.type = OCI_DTYPE_LOB;
193
186
  lob->svc = svc;
187
+ lob->svchp = NULL;
194
188
  lob->pos = 0;
195
189
  lob->char_width = 1;
196
190
  lob->csfrm = csfrm;
@@ -202,6 +196,7 @@ static VALUE oci8_lob_do_initialize(int argc, VALUE *argv, VALUE self, ub1 csfrm
202
196
  oci8_svcctx_t *svcctx = oci8_get_svcctx(svc);
203
197
  OCI8StringValue(val);
204
198
  oci_lc(OCILobCreateTemporary_nb(svcctx, svcctx->base.hp.svc, oci8_errhp, lob->base.hp.lob, 0, csfrm, lobtype, TRUE, OCI_DURATION_SESSION));
199
+ lob->svchp = oci8_get_oci_svcctx(svc);
205
200
  oci8_lob_write(self, val);
206
201
  } else {
207
202
  rb_raise(rb_eRuntimeError, "creating a temporary lob is not supported on this Oracle version");
@@ -498,7 +498,7 @@ oci8_base_t *oci8_get_handle(VALUE obj, VALUE klass)
498
498
  }
499
499
  Data_Get_Struct(obj, oci8_base_t, hp);
500
500
  if (hp->type == 0) {
501
- rb_raise(rb_eRuntimeError, "%s was already closed.",
501
+ rb_raise(eOCIException, "%s was already closed.",
502
502
  rb_obj_classname(obj));
503
503
  }
504
504
  return hp;
@@ -3,7 +3,7 @@
3
3
  * ocidatetime.c
4
4
  *
5
5
  * $Author: kubo $
6
- * $Date: 2011-06-12 22:14:51 +0900 (日, 12 6月 2011) $
6
+ * $Date: 2011-06-14 20:45:16 +0900 (Tue, 14 Jun 2011) $
7
7
  *
8
8
  * Copyright (C) 2005-2008 KUBO Takehiro <kubo@jiubao.org>
9
9
  *
@@ -3,7 +3,7 @@
3
3
  * oradate.c
4
4
  *
5
5
  * $Author: kubo $
6
- * $Date: 2010-09-05 22:07:21 +0900 (日, 05 9月 2010) $
6
+ * $Date: 2010-09-05 22:07:21 +0900 (Sun, 05 Sep 2010) $
7
7
  *
8
8
  * Copyright (C) 2002-2008 KUBO Takehiro <kubo@jiubao.org>
9
9
  *
metadata CHANGED
@@ -1,12 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-oci8
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 2
7
- - 0
8
- - 5
9
- version: 2.0.5
4
+ version: 2.0.6
10
5
  platform: ruby
11
6
  authors:
12
7
  - KUBO Takehiro
@@ -14,13 +9,11 @@ autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
11
 
17
- date: 2011-06-12 00:00:00 +09:00
12
+ date: 2011-06-14 00:00:00 +09:00
18
13
  default_executable:
19
14
  dependencies: []
20
15
 
21
- description: |
22
- ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available with Oracle8, Oracle8i, Oracle9i, Oracle10g and Oracle Instant Client.
23
-
16
+ description: ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available with Oracle8, Oracle8i, Oracle9i, Oracle10g and Oracle Instant Client.
24
17
  email: kubo@jiubao.org
25
18
  executables: []
26
19
 
@@ -109,8 +102,6 @@ files:
109
102
  - test/test_rowid.rb
110
103
  has_rdoc: true
111
104
  homepage: http://ruby-oci8.rubyforge.org
112
- licenses: []
113
-
114
105
  post_install_message:
115
106
  rdoc_options:
116
107
  - --main
@@ -118,29 +109,23 @@ rdoc_options:
118
109
  require_paths:
119
110
  - lib
120
111
  required_ruby_version: !ruby/object:Gem::Requirement
121
- none: false
122
112
  requirements:
123
113
  - - ">="
124
114
  - !ruby/object:Gem::Version
125
- segments:
126
- - 1
127
- - 8
128
- - 0
129
115
  version: 1.8.0
116
+ version:
130
117
  required_rubygems_version: !ruby/object:Gem::Requirement
131
- none: false
132
118
  requirements:
133
119
  - - ">="
134
120
  - !ruby/object:Gem::Version
135
- segments:
136
- - 0
137
121
  version: "0"
122
+ version:
138
123
  requirements: []
139
124
 
140
125
  rubyforge_project: ruby-oci8
141
- rubygems_version: 1.3.7
126
+ rubygems_version: 1.3.1
142
127
  signing_key:
143
- specification_version: 3
128
+ specification_version: 2
144
129
  summary: Ruby interface for Oracle using OCI8 API
145
130
  test_files:
146
131
  - test/test_all.rb