bug fixed for go1.3beta
This commit is contained in:
parent
a29eb5a21e
commit
56967f80c8
17
helpers.go
17
helpers.go
|
@ -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 {
|
|
||||||
find = true
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
sort.Sort(sort.StringSlice(left))
|
||||||
if !find {
|
sort.Sort(sort.StringSlice(right))
|
||||||
|
for i := 0; i < len(left); i++ {
|
||||||
|
if left[i] != right[i] {
|
||||||
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())
|
||||||
|
|
||||||
|
|
12
session.go
12
session.go
|
@ -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 {
|
for ii, key := range fields {
|
||||||
if hasBeforeSet {
|
b.BeforeSet(key, Cell(scanResults[ii].(*interface{})))
|
||||||
b.BeforeSet(fields[ii], Cell(scanResults[ii].(*interface{})))
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for ii, key := range fields {
|
||||||
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()
|
||||||
|
|
Loading…
Reference in New Issue