Fix scan nil primitive type slice
This commit is contained in:
parent
b31464e491
commit
fee77b695a
2 changed files with 12 additions and 8 deletions
|
|
@ -214,9 +214,9 @@ func mapRowToBaseTypeSlice(scanContext *scanContext, slicePtrValue reflect.Value
|
||||||
}
|
}
|
||||||
rowElemPtr := scanContext.rowElemValuePtr(index)
|
rowElemPtr := scanContext.rowElemValuePtr(index)
|
||||||
|
|
||||||
if !rowElemPtr.IsNil() {
|
if rowElemPtr != nil && !rowElemPtr.IsNil() {
|
||||||
updated = true
|
updated = true
|
||||||
err = appendElemToSlice(slicePtrValue, rowElemPtr)
|
err = appendElemToSlice(slicePtrValue, *rowElemPtr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -222,19 +222,23 @@ func (s *scanContext) rowElem(index int) interface{} {
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *scanContext) rowElemValuePtr(index int) reflect.Value {
|
func (s *scanContext) rowElemValuePtr(index int) *reflect.Value {
|
||||||
rowElem := s.rowElem(index)
|
rowElem := s.rowElem(index)
|
||||||
rowElemValue := reflect.ValueOf(rowElem)
|
rowElemValue := reflect.ValueOf(rowElem)
|
||||||
|
|
||||||
if rowElemValue.Kind() == reflect.Ptr {
|
if rowElemValue.Kind() == reflect.Ptr {
|
||||||
return rowElemValue
|
return &rowElemValue
|
||||||
}
|
}
|
||||||
|
|
||||||
if rowElemValue.CanAddr() {
|
if rowElemValue.CanAddr() {
|
||||||
return rowElemValue.Addr()
|
addr := rowElemValue.Addr()
|
||||||
|
return &addr
|
||||||
}
|
}
|
||||||
|
|
||||||
newElem := reflect.New(rowElemValue.Type())
|
if rowElemValue.IsValid() {
|
||||||
newElem.Elem().Set(rowElemValue)
|
newElem := reflect.New(rowElemValue.Type())
|
||||||
return newElem
|
newElem.Elem().Set(rowElemValue)
|
||||||
|
return &newElem
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue