Merge branch 'main'
This commit is contained in:
commit
fa4cff23d7
|
@ -34,6 +34,7 @@ func (statement *Statement) writeOracleLegacySelect(buf *builder.BytesWriter, co
|
|||
return statement.writeMultiple(buf,
|
||||
statement.writeSelectColumns(columnStr),
|
||||
statement.writeFrom,
|
||||
statement.writeWhere,
|
||||
statement.writeOracleLimit(columnStr),
|
||||
statement.writeGroupBy,
|
||||
statement.writeHaving,
|
||||
|
|
|
@ -27,6 +27,12 @@ func (session *Session) Iterate(bean any, 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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue