File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ type Statement struct {
18
18
19
19
// Statement status flags
20
20
prepared bool
21
+ preparedSql string
21
22
paramsBound bool
22
23
paramsRebound bool
23
24
@@ -42,6 +43,17 @@ type Statement struct {
42
43
43
44
// Prepare new statement
44
45
func (s * Statement ) Prepare (sql string ) (err os.Error ) {
46
+ // Auto reconnect
47
+ defer func () {
48
+ if err != nil && s .c .checkNet (err ) && s .c .Reconnect {
49
+ s .c .log (1 , "!!! Lost connection to server !!!" )
50
+ s .c .connected = false
51
+ err = s .c .reconnect ()
52
+ if err == nil {
53
+ err = s .Prepare (sql )
54
+ }
55
+ }
56
+ }()
45
57
// Log prepare
46
58
s .c .log (1 , "=== Begin prepare '%s' ===" , sql )
47
59
// Pre-run checks
@@ -83,6 +95,7 @@ func (s *Statement) Prepare(sql string) (err os.Error) {
83
95
}
84
96
// Statement is preapred
85
97
s .prepared = true
98
+ s .preparedSql = sql
86
99
return
87
100
}
88
101
@@ -248,6 +261,20 @@ func (s *Statement) SendLongData(num int, data []byte) (err os.Error) {
248
261
249
262
// Execute
250
263
func (s * Statement ) Execute () (err os.Error ) {
264
+ // Auto reconnect
265
+ defer func () {
266
+ if err != nil && s .c .checkNet (err ) && s .c .Reconnect {
267
+ s .c .log (1 , "!!! Lost connection to server !!!" )
268
+ s .c .connected = false
269
+ err = s .c .reconnect ()
270
+ if err == nil {
271
+ err = s .Prepare (s .preparedSql )
272
+ if err == nil {
273
+ err = s .Execute ()
274
+ }
275
+ }
276
+ }
277
+ }()
251
278
// Log execute
252
279
s .c .log (1 , "=== Begin execute ===" )
253
280
// Check prepared
You can’t perform that action at this time.
0 commit comments