dohmysql 0.2.21 → 0.2.22

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,7 +27,7 @@ class CacheConnector
27
27
  private
28
28
  def close_handle(msg)
29
29
  return unless @handle
30
- dohlog.debug("closing previous database connection - #{msg}")
30
+ DohDb.logger.call('debug', "closing previous database connection - #{msg}")
31
31
  @handle.close
32
32
  @handle = nil
33
33
  end
@@ -18,6 +18,7 @@ class Handle
18
18
  @config = config
19
19
  @testing_rollback = false
20
20
  log_config = @config.dup
21
+ @config[:reconnect] = true if !@config.keys.include?(:reconnect)
21
22
  log_config.delete(:password)
22
23
  DohDb.logger.call('connection', "creating connection with config: #{log_config}")
23
24
  @mysqlh = Mysql2::Client.new(@config)
@@ -26,9 +27,12 @@ class Handle
26
27
 
27
28
  def close
28
29
  unless closed?
29
- DohDb.logger.call('connection', "closing connection: id #{@mysqlh.thread_id}")
30
- @mysqlh.close
31
- @mysqlh = nil
30
+ begin
31
+ DohDb.logger.call('connection', "closing connection: id #{@mysqlh.thread_id}")
32
+ @mysqlh.close
33
+ ensure
34
+ @mysqlh = nil
35
+ end
32
36
  end
33
37
  end
34
38
 
@@ -182,6 +186,7 @@ private
182
186
  @mysqlh.query(sqlstr)
183
187
  rescue Exception => excpt
184
188
  DohDb.logger.call('error', "caught exception #{excpt.message} during query: #{sqlstr}")
189
+ close
185
190
  raise
186
191
  end
187
192
 
@@ -17,7 +17,6 @@ class Test_ConnectorInstance < DohTest::TestGroup
17
17
  assert_equal(nil, Doh.db.select_optional_field("SELECT money FROM #{tbl} WHERE id = 7"))
18
18
  assert_raises(UnexpectedQueryResult) {Doh.db.select_field("SELECT money FROM #{tbl} WHERE id = 7")}
19
19
  assert_equal(1, Doh.db.update_row("UPDATE #{tbl} SET money = 10.95 WHERE id = 1"))
20
- assert_raises(Mysql2::Error){Doh.db.query("some invalid sql here")}
21
20
  # TODO: re-enable
22
21
  # assert(DohTest::pop_error)
23
22
  assert_raises(UnexpectedQueryResult) {Doh.db.update_row("UPDATE #{tbl} SET money = 10.95 WHERE id = 7")}
@@ -27,6 +26,7 @@ class Test_ConnectorInstance < DohTest::TestGroup
27
26
  assert_equal(1, onerow['id'])
28
27
  rows = Doh.db.select("SELECT * FROM #{tbl}")
29
28
  rows.each {|row| assert(row['id'] != 0)}
29
+ assert_raises(Mysql2::Error){Doh.db.query("some invalid sql here")}
30
30
  end
31
31
  end
32
32
 
data/test/handle.dt.rb CHANGED
@@ -53,8 +53,17 @@ class Test_Handle < DohTest::TestGroup
53
53
  dbh.query("CREATE TEMPORARY TABLE #{tbl} (value INT KEY)")
54
54
  hash1 = {'value' => 1}
55
55
  assert_equal(0, dbh.insert_hash(hash1, tbl))
56
- assert_raises(Mysql2::Error) { dbh.insert_hash(hash1, tbl) }
57
56
  assert_equal(0, dbh.insert_ignore_hash(hash1, tbl))
57
+ assert_raises(Mysql2::Error) { dbh.insert_hash(hash1, tbl) }
58
+ end
59
+
60
+ def test_bad_handle_reconnect
61
+ dbh = get_dbh
62
+ begin
63
+ Timeout.timeout(0.001) { Doh.db.select_field("SELECT SLEEP(1), 0 FROM mysql.user GROUP BY 2") }
64
+ rescue => _
65
+ end
66
+ assert_equal(3, Doh.db.select_field("SELECT 3 FROM mysql.user GROUP BY 1"))
58
67
  end
59
68
  end
60
69
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dohmysql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.21
4
+ version: 0.2.22
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-10 00:00:00.000000000 Z
13
+ date: 2013-05-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: dohroot