summaryrefslogtreecommitdiffstats
path: root/vendor/xorm.io/xorm/engine.go
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2019-12-18 14:07:36 +0100
committerLunny Xiao <xiaolunwen@gmail.com>2019-12-18 21:07:36 +0800
commit6d811bcb14eb7199452d2673a6c30412989f7498 (patch)
treeaa5b16dc73b0cf7d4fa53b770a1fbb5f85d5daee /vendor/xorm.io/xorm/engine.go
parent3b4682e1722441a2c64f0bacd05aa795f8fb27da (diff)
downloadgitea-6d811bcb14eb7199452d2673a6c30412989f7498.tar.gz
gitea-6d811bcb14eb7199452d2673a6c30412989f7498.zip
Hide not allowed Reactions (#9387)
* Hide not allowed Reactions * filter in query :D * use ` Co-Authored-By: Alexey 〒erentyev <axifnx@gmail.com> * update xorm v0.8.0 -> v0.8.1
Diffstat (limited to 'vendor/xorm.io/xorm/engine.go')
-rw-r--r--vendor/xorm.io/xorm/engine.go47
1 files changed, 34 insertions, 13 deletions
diff --git a/vendor/xorm.io/xorm/engine.go b/vendor/xorm.io/xorm/engine.go
index 4ed0f77a92..a7e52ea484 100644
--- a/vendor/xorm.io/xorm/engine.go
+++ b/vendor/xorm.io/xorm/engine.go
@@ -207,25 +207,46 @@ func (engine *Engine) QuoteTo(buf *strings.Builder, value string) {
return
}
- quotePair := engine.dialect.Quote("")
+ quoteTo(buf, engine.dialect.Quote(""), value)
+}
- if value[0] == '`' || len(quotePair) < 2 || value[0] == quotePair[0] { // no quote
+func quoteTo(buf *strings.Builder, quotePair string, value string) {
+ if len(quotePair) < 2 { // no quote
_, _ = buf.WriteString(value)
return
- } else {
- prefix, suffix := quotePair[0], quotePair[1]
-
- _ = buf.WriteByte(prefix)
- for i := 0; i < len(value); i++ {
- if value[i] == '.' {
- _ = buf.WriteByte(suffix)
- _ = buf.WriteByte('.')
- _ = buf.WriteByte(prefix)
+ }
+
+ prefix, suffix := quotePair[0], quotePair[1]
+
+ i := 0
+ for i < len(value) {
+ // start of a token; might be already quoted
+ if value[i] == '.' {
+ _ = buf.WriteByte('.')
+ i++
+ } else if value[i] == prefix || value[i] == '`' {
+ // Has quotes; skip/normalize `name` to prefix+name+sufix
+ var ch byte
+ if value[i] == prefix {
+ ch = suffix
} else {
+ ch = '`'
+ }
+ i++
+ _ = buf.WriteByte(prefix)
+ for ; i < len(value) && value[i] != ch; i++ {
+ _ = buf.WriteByte(value[i])
+ }
+ _ = buf.WriteByte(suffix)
+ i++
+ } else {
+ // Requires quotes
+ _ = buf.WriteByte(prefix)
+ for ; i < len(value) && value[i] != '.'; i++ {
_ = buf.WriteByte(value[i])
}
+ _ = buf.WriteByte(suffix)
}
- _ = buf.WriteByte(suffix)
}
}
@@ -330,7 +351,7 @@ func (engine *Engine) Ping() error {
return session.Ping()
}
-// logging sql
+// logSQL save sql
func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) {
if engine.showSQL && !engine.showExecTime {
if len(sqlArgs) > 0 {