All the interface methods should list whether they’re required or not; definitely open an issue if something’s not clear. In terms of Data.reset!
, it certainly can be useful for sequential sources; take CSV.Source
, for example; it holds an internal IO
object that represents the underlying csv file. It also marks the datapos
, which is the byte offset in the file where the actual table data starts, so Data.reset!
is defined simply as seek(source.io, source.datapos)
.
Another case is SQLite.Source
: the data must be accessed row-by-row, so it’s not RandomAccess
, but it also can be Data.reset!
because it just involves resetting the result cursor back to row 1 of the resultset.