diff options
Diffstat (limited to 'vendor/github.com/go-xorm/xorm/rows.go')
-rw-r--r-- | vendor/github.com/go-xorm/xorm/rows.go | 27 |
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 |