bug fixed for In method

This commit is contained in:
Lunny Xiao 2014-11-21 23:40:59 +08:00
parent 9787c02273
commit f898f5d6a4
1 changed files with 15 additions and 5 deletions

View File

@ -758,7 +758,7 @@ func (statement *Statement) genInSql() (string, []interface{}) {
args := make([]interface{}, 0) args := make([]interface{}, 0)
for _, params := range statement.inColumns { for _, params := range statement.inColumns {
inStrs = append(inStrs, fmt.Sprintf("(%v IN (%v))", inStrs = append(inStrs, fmt.Sprintf("(%v IN (%v))",
statement.Engine.Quote(params.colName), statement.Engine.autoQuote(params.colName),
strings.Join(makeArray("?", len(params.args)), ","))) strings.Join(makeArray("?", len(params.args)), ",")))
args = append(args, params.args...) args = append(args, params.args...)
} }
@ -783,8 +783,8 @@ func (statement *Statement) attachInSql() {
func col2NewCols(columns ...string) []string { func col2NewCols(columns ...string) []string {
newColumns := make([]string, 0) newColumns := make([]string, 0)
for _, col := range columns { for _, col := range columns {
strings.Replace(col, "`", "", -1) col = strings.Replace(col, "`", "", -1)
strings.Replace(col, `"`, "", -1) col = strings.Replace(col, `"`, "", -1)
ccols := strings.Split(col, ",") ccols := strings.Split(col, ",")
for _, c := range ccols { for _, c := range ccols {
newColumns = append(newColumns, strings.TrimSpace(c)) newColumns = append(newColumns, strings.TrimSpace(c))
@ -793,11 +793,21 @@ func col2NewCols(columns ...string) []string {
return newColumns 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 { func (statement *Statement) col2NewColsWithQuote(columns ...string) []string {
newColumns := make([]string, 0) newColumns := make([]string, 0)
for _, col := range columns { for _, col := range columns {
strings.Replace(col, "`", "", -1) col = strings.Replace(col, "`", "", -1)
strings.Replace(col, statement.Engine.QuoteStr(), "", -1) col = strings.Replace(col, statement.Engine.QuoteStr(), "", -1)
ccols := strings.Split(col, ",") ccols := strings.Split(col, ",")
for _, c := range ccols { for _, c := range ccols {
fields := strings.Split(strings.TrimSpace(c), ".") fields := strings.Split(strings.TrimSpace(c), ".")