Add DryRunModeUnsupported Error for Row/Rows

This commit is contained in:
Jinzhu 2020-09-18 21:34:44 +08:00
parent d002c70cf6
commit 072f1de83a
2 changed files with 12 additions and 2 deletions

View File

@ -29,4 +29,6 @@ var (
ErrInvalidField = errors.New("invalid field") ErrInvalidField = errors.New("invalid field")
// ErrEmptySlice empty slice found // ErrEmptySlice empty slice found
ErrEmptySlice = errors.New("empty slice found") ErrEmptySlice = errors.New("empty slice found")
// ErrDryRunModeUnsupported dry run mode unsupported
ErrDryRunModeUnsupported = errors.New("dry run mode unsupported")
) )

View File

@ -334,13 +334,21 @@ func (db *DB) Count(count *int64) (tx *DB) {
func (db *DB) Row() *sql.Row { func (db *DB) Row() *sql.Row {
tx := db.getInstance().InstanceSet("rows", false) tx := db.getInstance().InstanceSet("rows", false)
tx.callbacks.Row().Execute(tx) tx.callbacks.Row().Execute(tx)
return tx.Statement.Dest.(*sql.Row) row, ok := tx.Statement.Dest.(*sql.Row)
if !ok && tx.DryRun {
db.Logger.Error(tx.Statement.Context, ErrDryRunModeUnsupported.Error())
}
return row
} }
func (db *DB) Rows() (*sql.Rows, error) { func (db *DB) Rows() (*sql.Rows, error) {
tx := db.getInstance().InstanceSet("rows", true) tx := db.getInstance().InstanceSet("rows", true)
tx.callbacks.Row().Execute(tx) tx.callbacks.Row().Execute(tx)
return tx.Statement.Dest.(*sql.Rows), tx.Error rows, ok := tx.Statement.Dest.(*sql.Rows)
if !ok && tx.DryRun && tx.Error == nil {
tx.Error = ErrDryRunModeUnsupported
}
return rows, tx.Error
} }
// Scan scan value to a struct // Scan scan value to a struct