Merge branch 'v1' into lunny/upgrade_mssql2

This commit is contained in:
Lunny Xiao 2024-01-15 14:51:40 +00:00
commit 12c177efec
2 changed files with 31 additions and 4 deletions

View File

@ -27,6 +27,12 @@ func (session *Session) Iterate(bean interface{}, fun IterFunc) error {
defer session.Close()
}
session.autoResetStatement = false
defer func() {
session.autoResetStatement = true
session.resetStatement()
}()
if session.statement.LastError != nil {
return session.statement.LastError
}
@ -64,15 +70,15 @@ func (session *Session) BufferSize(size int) *Session {
}
func (session *Session) bufferIterate(bean interface{}, fun IterFunc) error {
var bufferSize = session.statement.BufferSize
var pLimitN = session.statement.LimitN
bufferSize := session.statement.BufferSize
pLimitN := session.statement.LimitN
if pLimitN != nil && bufferSize > *pLimitN {
bufferSize = *pLimitN
}
var start = session.statement.Start
start := session.statement.Start
v := utils.ReflectValue(bean)
sliceType := reflect.SliceOf(v.Type())
var idx = 0
idx := 0
session.autoResetStatement = false
defer func() {
session.autoResetStatement = true

View File

@ -111,4 +111,25 @@ func TestBufferIterate(t *testing.T) {
})
assert.NoError(t, err)
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)
}