BufferedRowIterator¶
BufferedRowIterator
is an abstraction of iterators that are code-generated at execution time in Whole-Stage Java Code Generation (using WholeStageCodegenExec unary physical operator).
Contract¶
Initializing¶
void init(
int index,
Iterator<InternalRow>[] iters)
Used when WholeStageCodegenExec
unary physical operator is executed
Processing Next Row¶
void processNext()
Used when BufferedRowIterator
is requested to hasNext
hasNext¶
boolean hasNext()
hasNext
processNext when there are no rows in the currentRows buffer.
hasNext
is true
when the currentRows buffer has got any element. Otherwise, hasNext
is false
.
hasNext
is used when WholeStageCodegenExec
unary physical operator is executed (to generate an RDD[InternalRow]
to mapPartitionsWithIndex
over rows from up to two input RDDs).
currentRows Buffer¶
LinkedList<InternalRow> currentRows
currentRows
is an internal buffer of InternalRow:
- A new row is added when appending a row
- A row is removed when requested to next
currentRows
is used for hasNext and shouldStop.
Appending Row¶
void append(
InternalRow row)
append
simply adds the given InternalRow to the end of the currentRows buffer (thus the name append).
append
is used...FIXME