Merge branch 'main'

This commit is contained in:
CyJaySong 2024-02-17 11:59:14 +08:00
commit fa4cff23d7
3 changed files with 28 additions and 0 deletions

View File

@ -34,6 +34,7 @@ func (statement *Statement) writeOracleLegacySelect(buf *builder.BytesWriter, co
return statement.writeMultiple(buf, return statement.writeMultiple(buf,
statement.writeSelectColumns(columnStr), statement.writeSelectColumns(columnStr),
statement.writeFrom, statement.writeFrom,
statement.writeWhere,
statement.writeOracleLimit(columnStr), statement.writeOracleLimit(columnStr),
statement.writeGroupBy, statement.writeGroupBy,
statement.writeHaving, statement.writeHaving,

View File

@ -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
} }

View File

@ -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)
} }