aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/go-xorm/xorm/rows.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-xorm/xorm/rows.go')
-rw-r--r--vendor/github.com/go-xorm/xorm/rows.go27
1 files changed, 17 insertions, 10 deletions
diff --git a/vendor/github.com/go-xorm/xorm/rows.go b/vendor/github.com/go-xorm/xorm/rows.go
index d35040cd..47bc322f 100644
--- a/vendor/github.com/go-xorm/xorm/rows.go
+++ b/vendor/github.com/go-xorm/xorm/rows.go
@@ -16,13 +16,12 @@ import (
type Rows struct {
NoTypeCheck bool
- session *Session
- stmt *core.Stmt
- rows *core.Rows
- fields []string
- fieldsCount int
- beanType reflect.Type
- lastError error
+ session *Session
+ stmt *core.Stmt
+ rows *core.Rows
+ fields []string
+ beanType reflect.Type
+ lastError error
}
func newRows(session *Session, bean interface{}) (*Rows, error) {
@@ -35,7 +34,10 @@ func newRows(session *Session, bean interface{}) (*Rows, error) {
var sqlStr string
var args []interface{}
- rows.session.Statement.setRefValue(rValue(bean))
+ if err := rows.session.Statement.setRefValue(rValue(bean)); err != nil {
+ return nil, err
+ }
+
if len(session.Statement.TableName()) <= 0 {
return nil, ErrTableNotFound
}
@@ -82,7 +84,6 @@ func newRows(session *Session, bean interface{}) (*Rows, error) {
rows.Close()
return nil, err
}
- rows.fieldsCount = len(rows.fields)
return rows, nil
}
@@ -114,7 +115,13 @@ func (rows *Rows) Scan(bean interface{}) error {
return fmt.Errorf("scan arg is incompatible type to [%v]", rows.beanType)
}
- return rows.session.row2Bean(rows.rows, rows.fields, rows.fieldsCount, bean)
+ dataStruct := rValue(bean)
+ if err := rows.session.Statement.setRefValue(dataStruct); err != nil {
+ return err
+ }
+ _, err := rows.session.row2Bean(rows.rows, rows.fields, len(rows.fields), bean, &dataStruct, rows.session.Statement.RefTable)
+
+ return err
}
// Close session if session.IsAutoClose is true, and claimed any opened resources