lazy method
Stream<MssqlRow>
lazy(
- MssqlSession session, {
- int size = 500,
- MssqlDialect dialect = MssqlDialect.sql2012,
chunk as a stream, for a caller that would rather iterate than pass a callback.
Implementation
Stream<MssqlRow> lazy(
MssqlSession session, {
int size = 500,
MssqlDialect dialect = MssqlDialect.sql2012,
}) async* {
if (size <= 0) {
throw ArgumentError.value(size, 'size', 'Must be positive.');
}
if (ordering.isEmpty) {
throw StateError(
'lazy() needs orderBy(); see chunk(). Source: ${source.quoted}.',
);
}
MssqlKeyset.requireNamedColumns(ordering, 'lazy()');
List<Object?>? after;
while (true) {
var query = this;
if (after != null) {
query = query.where(MssqlKeyset.after(ordering, after));
}
final page = await query.top(size).get(session, dialect: dialect);
for (final row in page) {
yield row;
}
if (page.length < size) return;
after = MssqlKeyset.keysFromRow(page.last, ordering);
}
}