1414package mysql
1515
1616import (
17- "context"
1817 db "database/sql"
1918 "strings"
2019
@@ -49,14 +48,19 @@ func New(database *db.DB) rel.Adapter {
4948 DeleteBuilder : deleteBuilder ,
5049 TableBuilder : tableBuilder ,
5150 IndexBuilder : indexBuilder ,
52- IncrementFunc : incrementFunc ,
51+ Increment : getIncrement ( database ) ,
5352 ErrorMapper : errorMapper ,
5453 DB : database ,
5554 }
5655}
5756
5857// Open mysql connection using dsn.
5958func Open (dsn string ) (rel.Adapter , error ) {
59+ var database , err = db .Open ("mysql" , rewriteDsn (dsn ))
60+ return New (database ), err
61+ }
62+
63+ func rewriteDsn (dsn string ) string {
6064 // force clientFoundRows=true
6165 // this allows not found record check when updating a record.
6266 if strings .ContainsRune (dsn , '?' ) {
@@ -65,8 +69,7 @@ func Open(dsn string) (rel.Adapter, error) {
6569 dsn += "?clientFoundRows=true"
6670 }
6771
68- var database , err = db .Open ("mysql" , dsn )
69- return New (database ), err
72+ return dsn
7073}
7174
7275// MustOpen mysql connection using dsn.
@@ -79,19 +82,14 @@ func MustOpen(dsn string) rel.Adapter {
7982 return adapter
8083}
8184
82- func incrementFunc ( adapter sql. SQL ) int {
85+ func getIncrement ( database * db. DB ) int {
8386 var (
8487 variable string
8588 increment int
86- rows , err = adapter . DoQuery ( context . TODO (), "SHOW VARIABLES LIKE 'auto_increment_increment';" , nil )
89+ row = database . QueryRow ( "SHOW VARIABLES LIKE 'auto_increment_increment';" )
8790 )
8891
89- check (err )
90-
91- defer rows .Close ()
92- rows .Next ()
93- check (rows .Scan (& variable , & increment ))
94-
92+ check (row .Scan (& variable , & increment ))
9593 return increment
9694}
9795
0 commit comments