Skip to content

Commit 104a5d4

Browse files
author
Fei Chen
authored
Merge pull request #285 from flike/bugfix-autocommit
Bugfix autocommit
2 parents 2f21f25 + 13f4744 commit 104a5d4

4 files changed

Lines changed: 229 additions & 215 deletions

File tree

core/hack/version.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package hack
22

33
const (
4-
Version = "2016-11-20 09:29:56 +0800 @c9b0909"
5-
Compile = "2016-11-24 19:35:53 +0800 by go version go1.7.3 darwin/amd64"
4+
Version = "2016-11-26 11:13:45 +0800 @7b5c49e"
5+
Compile = "2016-11-26 11:25:54 +0800 by go version go1.7.1 linux/amd64"
66
)

proxy/server/conn_set.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,17 @@ func (c *ClientConn) handleSet(stmt *sqlparser.Set, sql string) (err error) {
7676
}
7777

7878
func (c *ClientConn) handleSetAutoCommit(val sqlparser.ValExpr) error {
79-
value, ok := val.(sqlparser.NumVal)
80-
if !ok {
81-
return fmt.Errorf("set autocommit error")
79+
flag := sqlparser.String(val)
80+
flag = strings.Trim(flag, "'`\"")
81+
// autocommit允许为 0, 1, ON, OFF, "ON", "OFF", 不允许"0", "1"
82+
if flag == `0` || flag == `1` {
83+
_, ok := val.(sqlparser.NumVal)
84+
if !ok {
85+
return fmt.Errorf("set autocommit error")
86+
}
8287
}
83-
switch value[0] {
84-
case '1':
88+
switch strings.ToUpper(flag) {
89+
case `1`, `ON`:
8590
c.status |= mysql.SERVER_STATUS_AUTOCOMMIT
8691
if c.status&mysql.SERVER_STATUS_IN_TRANS > 0 {
8792
c.status &= ^mysql.SERVER_STATUS_IN_TRANS
@@ -95,10 +100,10 @@ func (c *ClientConn) handleSetAutoCommit(val sqlparser.ValExpr) error {
95100
co.Close()
96101
}
97102
c.txConns = make(map[*backend.Node]*backend.BackendConn)
98-
case '0':
103+
case `0`, `OFF`:
99104
c.status &= ^mysql.SERVER_STATUS_AUTOCOMMIT
100105
default:
101-
return fmt.Errorf("invalid autocommit flag %s", value)
106+
return fmt.Errorf("invalid autocommit flag %s", flag)
102107
}
103108

104109
return c.writeOK(nil)

0 commit comments

Comments
 (0)