add reserved mode and bug fix
This commit is contained in:
parent
acfe622aa0
commit
a382049f26
33
engine.go
33
engine.go
|
@ -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 {
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue