Merge branch 'master' into dev
This commit is contained in:
commit
0d15b3549c
|
@ -28,6 +28,7 @@ const (
|
||||||
// a dialect is a driver's wrapper
|
// a dialect is a driver's wrapper
|
||||||
type dialect interface {
|
type dialect interface {
|
||||||
Init(DriverName, DataSourceName string) error
|
Init(DriverName, DataSourceName string) error
|
||||||
|
URI() *uri
|
||||||
DBType() string
|
DBType() string
|
||||||
SqlType(t *Column) string
|
SqlType(t *Column) string
|
||||||
SupportInsertMany() bool
|
SupportInsertMany() bool
|
||||||
|
|
19
mysql.go
19
mysql.go
|
@ -33,7 +33,6 @@ type mysqlParser struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *mysqlParser) parse(driverName, dataSourceName string) (*uri, error) {
|
func (p *mysqlParser) parse(driverName, dataSourceName string) (*uri, error) {
|
||||||
//cfg.params = make(map[string]string)
|
|
||||||
dsnPattern := regexp.MustCompile(
|
dsnPattern := regexp.MustCompile(
|
||||||
`^(?:(?P<user>.*?)(?::(?P<passwd>.*))?@)?` + // [user[:password]@]
|
`^(?:(?P<user>.*?)(?::(?P<passwd>.*))?@)?` + // [user[:password]@]
|
||||||
`(?:(?P<net>[^\(]*)(?:\((?P<addr>[^\)]*)\))?)?` + // [net[(addr)]]
|
`(?:(?P<net>[^\(]*)(?:\((?P<addr>[^\)]*)\))?)?` + // [net[(addr)]]
|
||||||
|
@ -49,6 +48,20 @@ func (p *mysqlParser) parse(driverName, dataSourceName string) (*uri, error) {
|
||||||
switch names[i] {
|
switch names[i] {
|
||||||
case "dbname":
|
case "dbname":
|
||||||
uri.dbName = match
|
uri.dbName = match
|
||||||
|
case "params":
|
||||||
|
if len(match) > 0 {
|
||||||
|
kvs := strings.Split(match, "&")
|
||||||
|
for _, kv := range kvs {
|
||||||
|
splits := strings.Split(kv, "=")
|
||||||
|
if len(splits) == 2 {
|
||||||
|
switch splits[0] {
|
||||||
|
case "charset":
|
||||||
|
uri.charset = splits[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return uri, nil
|
return uri, nil
|
||||||
|
@ -68,6 +81,10 @@ func (b *base) init(parser parser, drivername, dataSourceName string) (err error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *base) URI() *uri {
|
||||||
|
return b.uri
|
||||||
|
}
|
||||||
|
|
||||||
func (b *base) DBType() string {
|
func (b *base) DBType() string {
|
||||||
return b.uri.dbType
|
return b.uri.dbType
|
||||||
}
|
}
|
||||||
|
|
|
@ -638,8 +638,12 @@ func (statement *Statement) genCreateTableSQL() string {
|
||||||
if statement.Engine.dialect.SupportEngine() && statement.StoreEngine != "" {
|
if statement.Engine.dialect.SupportEngine() && statement.StoreEngine != "" {
|
||||||
sql += " ENGINE=" + statement.StoreEngine
|
sql += " ENGINE=" + statement.StoreEngine
|
||||||
}
|
}
|
||||||
if statement.Engine.dialect.SupportCharset() && statement.Charset != "" {
|
if statement.Engine.dialect.SupportCharset() {
|
||||||
sql += " DEFAULT CHARSET " + statement.Charset
|
if statement.Charset != "" {
|
||||||
|
sql += " DEFAULT CHARSET " + statement.Charset
|
||||||
|
} else if statement.Engine.dialect.URI().charset != "" {
|
||||||
|
sql += " DEFAULT CHARSET " + statement.Engine.dialect.URI().charset
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sql += ";"
|
sql += ";"
|
||||||
return sql
|
return sql
|
||||||
|
|
Loading…
Reference in New Issue