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 (
"fmt"
"reflect"
"sort"
"strconv"
"strings"
"time"
@ -56,24 +57,20 @@ func structName(v reflect.Type) string {
}
func sliceEq(left, right []string) bool {
for _, l := range left {
var find bool
for _, r := range right {
if l == r {
find = true
break
if len(left) != len(right) {
return false
}
}
if !find {
sort.Sort(sort.StringSlice(left))
sort.Sort(sort.StringSlice(right))
for i := 0; i < len(left); i++ {
if left[i] != right[i] {
return false
}
}
return true
}
func value2Bytes(rawValue *reflect.Value) (data []byte, err error) {
aa := reflect.TypeOf((*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
}
b, hasBeforeSet := bean.(BeforeSetProcessor)
if b, hasBeforeSet := bean.(BeforeSetProcessor); hasBeforeSet {
for ii, key := range fields {
if hasBeforeSet {
b.BeforeSet(fields[ii], Cell(scanResults[ii].(*interface{})))
b.BeforeSet(key, Cell(scanResults[ii].(*interface{})))
}
}
for ii, key := range fields {
if fieldValue := session.getField(&dataStruct, key, table); fieldValue != nil {
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)
}
if structConvert, ok := fieldValue.Interface().(core.Conversion); ok {
return structConvert.FromDB(data)
}
var v interface{}
key := col.Name
fieldType := fieldValue.Type()