We use the builtin iterator. Actually the table has 460000 records. At the max it is able to fetch only 323000 records.
No errors observed.
var pageState []byte
var count int //TODO: remove after testing
log.Info("pageState:", pageState)
query := c.Session.Query("select * from candidate").PageState(nil).PageSize(5000)
for {
iter := query.Iter()
tmplist, err := iter.SliceMap()
if len(tmplist) == 0 {
log.Info("No data to fetch, break for loop")
break
} else if err != nil {
log.Info("Error fetching record:", err)
return ErrDBnotAccessible
}
count += len(tmplist)
nextPageState := iter.PageState()
if len(nextPageState) == 0 {
log.Info("No more pages found, break the loop ")
break
} else {
//iterate over more pages
iter = query.PageState(nextPageState).Iter()
}
}