do_sqlite3 0.10.9-x86-mswin32-60 → 0.10.10-x86-mswin32-60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog.markdown CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.10.10 2012-10-11
2
+
3
+ * Add support to C driver for busy\_timeout
4
+
1
5
  ## 0.10.9 2012-08-13
2
6
 
3
7
  * Fix segfault when loading custom extensions
@@ -137,6 +137,20 @@ int do_sqlite3_flags_from_uri(VALUE uri) {
137
137
 
138
138
  #endif
139
139
 
140
+
141
+ int do_sqlite3_busy_timeout_from_uri(VALUE uri) {
142
+ VALUE query_values = rb_funcall(uri, rb_intern("query"), 0);
143
+ if(query_values != Qnil && TYPE(query_values) == T_HASH) {
144
+ VALUE timeout = rb_hash_aref(query_values, rb_str_new2("busy_timeout"));
145
+ if(timeout == Qnil) {
146
+ return -1;
147
+ }
148
+
149
+ return rb_cstr2inum(RSTRING_PTR(timeout), 0);
150
+ }
151
+ return -1;
152
+ }
153
+
140
154
  /****** Public API ******/
141
155
 
142
156
  VALUE do_sqlite3_cConnection_initialize(VALUE self, VALUE uri) {
@@ -154,6 +168,11 @@ VALUE do_sqlite3_cConnection_initialize(VALUE self, VALUE uri) {
154
168
  do_sqlite3_raise_error(self, db, Qnil);
155
169
  }
156
170
 
171
+ int timeout = do_sqlite3_busy_timeout_from_uri(uri);
172
+ if(timeout > 0) {
173
+ sqlite3_busy_timeout(db, timeout);
174
+ }
175
+
157
176
  rb_iv_set(self, "@uri", uri);
158
177
  rb_iv_set(self, "@connection", Data_Wrap_Struct(rb_cObject, 0, 0, db));
159
178
  // Sqlite3 only supports UTF-8, so this is the standard encoding
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  module DataObjects
2
2
  module Sqlite3
3
- VERSION = '0.10.9'
3
+ VERSION = '0.10.10'
4
4
  end
5
5
  end
@@ -17,4 +17,21 @@ describe DataObjects::Sqlite3::Connection do
17
17
  it_should_behave_like 'a Connection'
18
18
  it_should_behave_like 'a Connection via JDNI' if JRUBY
19
19
  it_should_behave_like 'a Connection with JDBC URL support' if JRUBY
20
+
21
+ unless JRUBY
22
+
23
+ describe 'connecting with busy timeout' do
24
+
25
+ it 'connects with a valid timeout' do
26
+ DataObjects::Connection.new("#{CONFIG.uri}?busy_timeout=200").should_not be_nil
27
+ end
28
+
29
+ it 'raises an error when passed an invalid value' do
30
+ lambda { DataObjects::Connection.new("#{CONFIG.uri}?busy_timeout=stuff") }.
31
+ should raise_error(ArgumentError)
32
+ end
33
+
34
+ end
35
+ end
36
+
20
37
  end
data/tasks/compile.rake CHANGED
@@ -55,7 +55,7 @@ begin
55
55
  ext.classpath = '../do_jdbc/lib/do_jdbc_internal.jar'
56
56
  ext.java_compiling do |gem|
57
57
  gem.add_dependency 'jdbc-sqlite3', '>=3.5.8'
58
- gem.add_dependency 'do_jdbc', '0.10.9'
58
+ gem.add_dependency 'do_jdbc', '0.10.10'
59
59
  end
60
60
  end
61
61
  rescue LoadError
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 10
8
- - 9
9
- version: 0.10.9
8
+ - 10
9
+ version: 0.10.10
10
10
  platform: x86-mswin32-60
11
11
  authors:
12
12
  - Dirkjan Bussink
@@ -28,8 +28,8 @@ dependencies:
28
28
  segments:
29
29
  - 0
30
30
  - 10
31
- - 9
32
- version: 0.10.9
31
+ - 10
32
+ version: 0.10.10
33
33
  requirement: *id001
34
34
  - !ruby/object:Gem::Dependency
35
35
  prerelease: false