Reviewed-on: https://gitea.com/xorm/xorm/pulls/2395 Reviewed-on: https://gitea.com/xorm/xorm/pulls/2396
This commit is contained in:
parent
15c64a9dfb
commit
3344b42b4b
|
@ -27,6 +27,12 @@ func (session *Session) Iterate(bean any, fun IterFunc) error {
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
session.autoResetStatement = false
|
||||||
|
defer func() {
|
||||||
|
session.autoResetStatement = true
|
||||||
|
session.resetStatement()
|
||||||
|
}()
|
||||||
|
|
||||||
if session.statement.LastError != nil {
|
if session.statement.LastError != nil {
|
||||||
return session.statement.LastError
|
return session.statement.LastError
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,4 +111,25 @@ func TestBufferIterate(t *testing.T) {
|
||||||
})
|
})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, 10, cnt)
|
assert.EqualValues(t, 10, cnt)
|
||||||
|
|
||||||
|
// test reset statement
|
||||||
|
cnt = 0
|
||||||
|
sess := testEngine.NewSession()
|
||||||
|
defer sess.Close()
|
||||||
|
// generate: SELECT `id`, `is_man` FROM `user_buffer_iterate` WHERE (`id` <= 10) LIMIT 2 OFFSET 10 []
|
||||||
|
err = sess.Where("`id` <= 10").BufferSize(2).Iterate(new(UserBufferIterate), func(i int, bean interface{}) error {
|
||||||
|
user := bean.(*UserBufferIterate)
|
||||||
|
assert.EqualValues(t, cnt+1, user.Id)
|
||||||
|
assert.EqualValues(t, true, user.IsMan)
|
||||||
|
cnt++
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 10, cnt)
|
||||||
|
|
||||||
|
beans := make([]*UserBufferIterate, 0, 10)
|
||||||
|
// generate: SELECT `id`, `is_man` FROM `user_buffer_iterate` WHERE (`id` <= 10) AND (`id` >= 10) LIMIT 2 OFFSET 10 []
|
||||||
|
err = sess.Where("`id` >= 10").Limit(2).Find(&beans)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Len(t, beans, 2)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue