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.go73
1 files changed, 27 insertions, 46 deletions
diff --git a/vendor/github.com/go-xorm/xorm/rows.go b/vendor/github.com/go-xorm/xorm/rows.go
index 47bc322f..31e29ae2 100644
--- a/vendor/github.com/go-xorm/xorm/rows.go
+++ b/vendor/github.com/go-xorm/xorm/rows.go
@@ -17,7 +17,6 @@ type Rows struct {
NoTypeCheck bool
session *Session
- stmt *core.Stmt
rows *core.Rows
fields []string
beanType reflect.Type
@@ -29,53 +28,33 @@ func newRows(session *Session, bean interface{}) (*Rows, error) {
rows.session = session
rows.beanType = reflect.Indirect(reflect.ValueOf(bean)).Type()
- defer rows.session.resetStatement()
-
var sqlStr string
var args []interface{}
+ var err error
- if err := rows.session.Statement.setRefValue(rValue(bean)); err != nil {
+ if err = rows.session.statement.setRefValue(rValue(bean)); err != nil {
return nil, err
}
- if len(session.Statement.TableName()) <= 0 {
+ if len(session.statement.TableName()) <= 0 {
return nil, ErrTableNotFound
}
- if rows.session.Statement.RawSQL == "" {
- sqlStr, args = rows.session.Statement.genGetSQL(bean)
- } else {
- sqlStr = rows.session.Statement.RawSQL
- args = rows.session.Statement.RawParams
- }
-
- for _, filter := range rows.session.Engine.dialect.Filters() {
- sqlStr = filter.Do(sqlStr, session.Engine.dialect, rows.session.Statement.RefTable)
- }
-
- rows.session.saveLastSQL(sqlStr, args...)
- var err error
- if rows.session.prepareStmt {
- rows.stmt, err = rows.session.DB().Prepare(sqlStr)
- if err != nil {
- rows.lastError = err
- rows.Close()
- return nil, err
- }
-
- rows.rows, err = rows.stmt.Query(args...)
+ if rows.session.statement.RawSQL == "" {
+ sqlStr, args, err = rows.session.statement.genGetSQL(bean)
if err != nil {
- rows.lastError = err
- rows.Close()
return nil, err
}
} else {
- rows.rows, err = rows.session.DB().Query(sqlStr, args...)
- if err != nil {
- rows.lastError = err
- rows.Close()
- return nil, err
- }
+ sqlStr = rows.session.statement.RawSQL
+ args = rows.session.statement.RawParams
+ }
+
+ rows.rows, err = rows.session.queryRows(sqlStr, args...)
+ if err != nil {
+ rows.lastError = err
+ rows.Close()
+ return nil, err
}
rows.fields, err = rows.rows.Columns()
@@ -116,17 +95,26 @@ func (rows *Rows) Scan(bean interface{}) error {
}
dataStruct := rValue(bean)
- if err := rows.session.Statement.setRefValue(dataStruct); err != nil {
+ 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
+ scanResults, err := rows.session.row2Slice(rows.rows, rows.fields, bean)
+ if err != nil {
+ return err
+ }
+
+ _, err = rows.session.slice2Bean(scanResults, rows.fields, bean, &dataStruct, rows.session.statement.RefTable)
+ if err != nil {
+ return err
+ }
+
+ return rows.session.executeProcessors()
}
// Close session if session.IsAutoClose is true, and claimed any opened resources
func (rows *Rows) Close() error {
- if rows.session.IsAutoClose {
+ if rows.session.isAutoClose {
defer rows.session.Close()
}
@@ -134,17 +122,10 @@ func (rows *Rows) Close() error {
if rows.rows != nil {
rows.lastError = rows.rows.Close()
if rows.lastError != nil {
- defer rows.stmt.Close()
return rows.lastError
}
}
- if rows.stmt != nil {
- rows.lastError = rows.stmt.Close()
- }
} else {
- if rows.stmt != nil {
- defer rows.stmt.Close()
- }
if rows.rows != nil {
defer rows.rows.Close()
}