bug fixed for go1.3beta

This commit is contained in:
Lunny Xiao 2014-05-12 23:27:15 +08:00
parent a29eb5a21e
commit 56967f80c8
2 changed files with 17 additions and 16 deletions

View File

@ -3,6 +3,7 @@ package xorm
import ( import (
"fmt" "fmt"
"reflect" "reflect"
"sort"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -56,24 +57,20 @@ func structName(v reflect.Type) string {
} }
func sliceEq(left, right []string) bool { func sliceEq(left, right []string) bool {
for _, l := range left { if len(left) != len(right) {
var find bool return false
for _, r := range right { }
if l == r { sort.Sort(sort.StringSlice(left))
find = true sort.Sort(sort.StringSlice(right))
break for i := 0; i < len(left); i++ {
} if left[i] != right[i] {
}
if !find {
return false return false
} }
} }
return true return true
} }
func value2Bytes(rawValue *reflect.Value) (data []byte, err error) { func value2Bytes(rawValue *reflect.Value) (data []byte, err error) {
aa := reflect.TypeOf((*rawValue).Interface()) aa := reflect.TypeOf((*rawValue).Interface())
vv := reflect.ValueOf((*rawValue).Interface()) vv := reflect.ValueOf((*rawValue).Interface())

View File

@ -1442,13 +1442,13 @@ func (session *Session) row2Bean(rows *core.Rows, fields []string, fieldsCount i
return err return err
} }
b, hasBeforeSet := bean.(BeforeSetProcessor) if b, hasBeforeSet := bean.(BeforeSetProcessor); hasBeforeSet {
for ii, key := range fields {
b.BeforeSet(key, Cell(scanResults[ii].(*interface{})))
}
}
for ii, key := range fields { for ii, key := range fields {
if hasBeforeSet {
b.BeforeSet(fields[ii], Cell(scanResults[ii].(*interface{})))
}
if fieldValue := session.getField(&dataStruct, key, table); fieldValue != nil { if fieldValue := session.getField(&dataStruct, key, table); fieldValue != nil {
rawValue := reflect.Indirect(reflect.ValueOf(scanResults[ii])) rawValue := reflect.Indirect(reflect.ValueOf(scanResults[ii]))
@ -2061,6 +2061,10 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
return structConvert.FromDB(data) return structConvert.FromDB(data)
} }
if structConvert, ok := fieldValue.Interface().(core.Conversion); ok {
return structConvert.FromDB(data)
}
var v interface{} var v interface{}
key := col.Name key := col.Name
fieldType := fieldValue.Type() fieldType := fieldValue.Type()