Package org.apache.druid.frame.segment
Class FrameCursor
- java.lang.Object
-
- org.apache.druid.frame.segment.FrameCursor
-
- All Implemented Interfaces:
Cursor
public class FrameCursor extends Object implements Cursor
An implementation ofCursorused byRowFrameCursorFactoryandColumnarFrameCursorFactory. Adds the methodsgetCurrentRow()andsetCurrentRow(int)so the cursor can be moved to particular rows.
-
-
Constructor Summary
Constructors Constructor Description FrameCursor(SimpleSettableOffset offset, ColumnSelectorFactory columnSelectorFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadvance()Advance the cursor to the next position, checking if thread has been interrupted after advancing and possibly throwingQueryInterruptedExceptionif so.voidadvanceUninterruptibly()Advance to the cursor to the next position.ColumnSelectorFactorygetColumnSelectorFactory()Get aColumnSelectorFactorywhose selectors will be backed by the row values at the current position of the cursorintgetCurrentRow()Returns 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().booleanisDoneOrInterrupted()Check 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 Detail
-
FrameCursor
public FrameCursor(SimpleSettableOffset offset, ColumnSelectorFactory columnSelectorFactory)
-
-
Method Detail
-
getColumnSelectorFactory
public ColumnSelectorFactory 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:
Cursor.isDone()
-
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.
-
-