Package org.apache.druid.frame.segment
Class FrameCursor
java.lang.Object
org.apache.druid.frame.segment.FrameCursor
- All Implemented Interfaces:
Cursor
An implementation of
Cursor used by RowFrameCursorFactory
and ColumnarFrameCursorFactory.
Adds the methods getCurrentRow() and setCurrentRow(int) so the cursor can be moved to
particular rows.-
Constructor Summary
ConstructorsConstructorDescriptionFrameCursor(SimpleSettableOffset offset, ColumnSelectorFactory columnSelectorFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoidadvance()Advance the cursor to the next position, checking if thread has been interrupted after advancing and possibly throwingQueryInterruptedExceptionif so.voidAdvance to the cursor to the next position.Get aColumnSelectorFactorywhose selectors will be backed by the row values at the current position of the cursorintReturns the current row number.booleanisDone()Check if the current cursor position is valid, returning false if there are values to read from selectors created byCursor.getColumnSelectorFactory().booleanCheck if the current cursor position is valid, or if the thread has been interrupted.voidreset()Reset to start of cursor.voidsetCurrentRow(int rowNumber) Moves this cursor to a particular row number.
-
Constructor Details
-
FrameCursor
-
-
Method Details
-
getColumnSelectorFactory
Description copied from interface:CursorGet aColumnSelectorFactorywhose selectors will be backed by the row values at the current position of the cursor- Specified by:
getColumnSelectorFactoryin interfaceCursor
-
advance
public void advance()Description copied from interface:CursorAdvance the cursor to the next position, checking if thread has been interrupted after advancing and possibly throwingQueryInterruptedExceptionif so. Callers should checkCursor.isDone()orCursor.isDoneOrInterrupted()before getting the next value from a selector. -
advanceUninterruptibly
public void advanceUninterruptibly()Description copied from interface:CursorAdvance to the cursor to the next position. Callers should checkCursor.isDone()orCursor.isDoneOrInterrupted()before getting the next value from a selector. However, underlying implementation may still check for thread interruption if advancing the cursor is a long-running operation.- Specified by:
advanceUninterruptiblyin interfaceCursor
-
isDone
public boolean isDone()Description copied from interface:CursorCheck if the current cursor position is valid, returning false if there are values to read from selectors created byCursor.getColumnSelectorFactory(). If true, any such selectors will no longer produce values. -
isDoneOrInterrupted
public boolean isDoneOrInterrupted()Description copied from interface:CursorCheck if the current cursor position is valid, or if the thread has been interrupted.- Specified by:
isDoneOrInterruptedin interfaceCursor- See Also:
-
reset
public void reset()Description copied from interface:CursorReset to start of cursor. Most cursor implementations are backed by immutable data, but there is generically no guarantee that advancing through a cursor again will read exactly the same data or even number of rows, since the underlying data might be mutable in some cases. -
getCurrentRow
public int getCurrentRow()Returns the current row number. -
setCurrentRow
public void setCurrentRow(int rowNumber) Moves this cursor to a particular row number.
-