summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/go-xorm
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-xorm')
-rw-r--r--vendor/github.com/go-xorm/builder/cond_in.go24
1 files changed, 20 insertions, 4 deletions
diff --git a/vendor/github.com/go-xorm/builder/cond_in.go b/vendor/github.com/go-xorm/builder/cond_in.go
index 9ada13b700..692d2e289a 100644
--- a/vendor/github.com/go-xorm/builder/cond_in.go
+++ b/vendor/github.com/go-xorm/builder/cond_in.go
@@ -6,6 +6,7 @@ package builder
import (
"fmt"
+ "reflect"
"strings"
)
@@ -195,11 +196,26 @@ func (condIn condIn) WriteTo(w Writer) error {
if len(condIn.vals) <= 0 {
return ErrNoInConditions
}
- questionMark := strings.Repeat("?,", len(condIn.vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
+
+ v := reflect.ValueOf(condIn.vals[0])
+ if v.Kind() == reflect.Slice {
+ l := v.Len()
+
+ questionMark := strings.Repeat("?,", l)
+ if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
+ return err
+ }
+
+ for i := 0; i < l; i++ {
+ w.Append(v.Index(i).Interface())
+ }
+ } else {
+ questionMark := strings.Repeat("?,", len(condIn.vals))
+ if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
+ return err
+ }
+ w.Append(condIn.vals...)
}
- w.Append(condIn.vals...)
}
return nil
}