From f898f5d6a4ab91b57e7ddbb9ed00c190184e93c0 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 21 Nov 2014 23:40:59 +0800 Subject: [PATCH] bug fixed for In method --- statement.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/statement.go b/statement.go index 141d49c5..b19b2b8b 100644 --- a/statement.go +++ b/statement.go @@ -758,7 +758,7 @@ func (statement *Statement) genInSql() (string, []interface{}) { args := make([]interface{}, 0) for _, params := range statement.inColumns { inStrs = append(inStrs, fmt.Sprintf("(%v IN (%v))", - statement.Engine.Quote(params.colName), + statement.Engine.autoQuote(params.colName), strings.Join(makeArray("?", len(params.args)), ","))) args = append(args, params.args...) } @@ -783,8 +783,8 @@ func (statement *Statement) attachInSql() { func col2NewCols(columns ...string) []string { newColumns := make([]string, 0) for _, col := range columns { - strings.Replace(col, "`", "", -1) - strings.Replace(col, `"`, "", -1) + col = strings.Replace(col, "`", "", -1) + col = strings.Replace(col, `"`, "", -1) ccols := strings.Split(col, ",") for _, c := range ccols { newColumns = append(newColumns, strings.TrimSpace(c)) @@ -793,11 +793,21 @@ func col2NewCols(columns ...string) []string { return newColumns } +func (engine *Engine) autoQuote(col string) string { + col = strings.Replace(col, "`", "", -1) + col = strings.Replace(col, engine.QuoteStr(), "", -1) + fields := strings.Split(strings.TrimSpace(col), ".") + for i, field := range fields { + fields[i] = engine.Quote(field) + } + return strings.Join(fields, ".") +} + func (statement *Statement) col2NewColsWithQuote(columns ...string) []string { newColumns := make([]string, 0) for _, col := range columns { - strings.Replace(col, "`", "", -1) - strings.Replace(col, statement.Engine.QuoteStr(), "", -1) + col = strings.Replace(col, "`", "", -1) + col = strings.Replace(col, statement.Engine.QuoteStr(), "", -1) ccols := strings.Split(col, ",") for _, c := range ccols { fields := strings.Split(strings.TrimSpace(c), ".")