forked from mirror/gorm
Merge pull request #1256 from fobispo-link/master
Issue #1249 fix - replacing $ placeholders in order when logging
This commit is contained in:
commit
2c025b25fe
25
logger.go
25
logger.go
|
@ -12,8 +12,9 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
defaultLogger = Logger{log.New(os.Stdout, "\r\n", 0)}
|
||||
sqlRegexp = regexp.MustCompile(`(\$\d+)|\?`)
|
||||
defaultLogger = Logger{log.New(os.Stdout, "\r\n", 0)}
|
||||
sqlRegexp = regexp.MustCompile(`\?`)
|
||||
numericPlaceHolderRegexp = regexp.MustCompile(`\$\d+`)
|
||||
)
|
||||
|
||||
type logger interface {
|
||||
|
@ -71,11 +72,21 @@ func (logger Logger) Print(values ...interface{}) {
|
|||
}
|
||||
}
|
||||
|
||||
var formattedValuesLength = len(formattedValues)
|
||||
for index, value := range sqlRegexp.Split(values[3].(string), -1) {
|
||||
sql += value
|
||||
if index < formattedValuesLength {
|
||||
sql += formattedValues[index]
|
||||
// differentiate between $n placeholders or else treat like ?
|
||||
if numericPlaceHolderRegexp.MatchString(values[3].(string)) {
|
||||
sql = values[3].(string)
|
||||
for index, value := range formattedValues {
|
||||
placeholder := fmt.Sprintf(`\$%d`, index+1)
|
||||
subre := regexp.MustCompile(placeholder)
|
||||
sql = subre.ReplaceAllString(sql, value)
|
||||
}
|
||||
} else {
|
||||
var formattedValuesLength = len(formattedValues)
|
||||
for index, value := range sqlRegexp.Split(values[3].(string), -1) {
|
||||
sql += value
|
||||
if index < formattedValuesLength {
|
||||
sql += formattedValues[index]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue