add reserved mode and bug fix

This commit is contained in:
Lunny Xiao 2017-06-19 21:11:17 +08:00
parent acfe622aa0
commit a382049f26
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 13 additions and 24 deletions

View File

@ -30,7 +30,7 @@ type QuoteMode int
const ( const (
QuoteAddAlways QuoteMode = iota QuoteAddAlways QuoteMode = iota
QuoteNoAdd QuoteNoAdd
//QuoteAddNonReserved QuoteAddReserved
) )
// Engine is the major struct of xorm, it means a database manager. // Engine is the major struct of xorm, it means a database manager.
@ -141,18 +141,10 @@ func (engine *Engine) QuoteStr() string {
// Quote Use QuoteStr quote the string sql // Quote Use QuoteStr quote the string sql
func (engine *Engine) Quote(value string) string { func (engine *Engine) Quote(value string) string {
value = strings.TrimSpace(value) var buf string
if len(value) == 0 { b := bytes.NewBufferString(buf)
return value engine.QuoteTo(b, value)
} return b.String()
if string(value[0]) == engine.dialect.QuoteStr() || value[0] == '`' {
return value
}
value = strings.Replace(value, ".", engine.QuoteStr()+"."+engine.QuoteStr(), -1)
return engine.QuoteStr() + value + engine.QuoteStr()
} }
// QuoteTo quotes string and writes into the buffer // QuoteTo quotes string and writes into the buffer
@ -166,18 +158,15 @@ func (engine *Engine) QuoteTo(buf *bytes.Buffer, value string) {
return return
} }
if engine.QuoteStr() != "" { v := strings.Trim(value, "`"+engine.dialect.QuoteStr())
if string(value[0]) == engine.dialect.QuoteStr() || value[0] == '`' { if engine.QuoteMode == QuoteNoAdd ||
buf.WriteString(value) (engine.QuoteMode == QuoteAddReserved && !engine.dialect.IsReserved(v)) {
buf.WriteString(v)
return return
} }
}
value = strings.Replace(value, ".", engine.QuoteStr()+"."+engine.QuoteStr(), -1) v = strings.Replace(v, ".", engine.QuoteStr()+"."+engine.QuoteStr(), -1)
buf.WriteString(engine.dialect.Quote(v))
buf.WriteString(engine.QuoteStr())
buf.WriteString(value)
buf.WriteString(engine.QuoteStr())
} }
func (engine *Engine) quote(sql string) string { func (engine *Engine) quote(sql string) string {

View File

@ -36,7 +36,7 @@ func createEngine(dbType, connStr string) error {
testEngine.ShowSQL(*showSQL) testEngine.ShowSQL(*showSQL)
testEngine.logger.SetLevel(core.LOG_DEBUG) testEngine.logger.SetLevel(core.LOG_DEBUG)
//testEngine.QuoteMode = QuoteNoAdd //testEngine.QuoteMode = QuoteAddReserved
} }
tables, err := testEngine.DBMetas() tables, err := testEngine.DBMetas()