Package org.h2.index

Class IndexCursor

java.lang.Object
org.h2.index.IndexCursor
All Implemented Interfaces:
Cursor

public class IndexCursor extends Object implements Cursor
The filter used to walk through an index. This class supports IN(..) and IN(SELECT ...) optimizations.
  • Field Details

    • session

      private SessionLocal session
    • index

      private Index index
    • table

      private Table table
    • indexColumns

      private IndexColumn[] indexColumns
    • alwaysFalse

      private boolean alwaysFalse
    • start

      private SearchRow start
    • end

      private SearchRow end
    • intersects

      private SearchRow intersects
    • cursor

      private Cursor cursor
    • inColumn

      private Column inColumn
    • inListIndex

      private int inListIndex
    • inList

      private Value[] inList
    • inResult

      private ResultInterface inResult
  • Constructor Details

    • IndexCursor

      public IndexCursor()
  • Method Details

    • setIndex

      public void setIndex(Index index)
    • prepare

      public void prepare(SessionLocal s, ArrayList<IndexCondition> indexConditions)
      Prepare this index cursor to make a lookup in index.
      Parameters:
      s - Session.
      indexConditions - Index conditions.
    • find

      public void find(SessionLocal s, ArrayList<IndexCondition> indexConditions)
      Re-evaluate the start and end values of the index search for rows.
      Parameters:
      s - the session
      indexConditions - the index conditions
    • canUseIndexForIn

      private boolean canUseIndexForIn(Column column)
    • canUseIndexFor

      private boolean canUseIndexFor(Column column)
    • getSpatialSearchRow

      private SearchRow getSpatialSearchRow(SearchRow row, int columnId, Value v)
    • getSearchRow

      private SearchRow getSearchRow(SearchRow row, int columnId, Value v, boolean max)
    • getMax

      private Value getMax(Value a, Value b, boolean bigger)
    • isAlwaysFalse

      public boolean isAlwaysFalse()
      Check if the result is empty for sure.
      Returns:
      true if it is
    • getStart

      public SearchRow getStart()
      Get start search row.
      Returns:
      search row
    • getEnd

      public SearchRow getEnd()
      Get end search row.
      Returns:
      search row
    • get

      public Row get()
      Description copied from interface: Cursor
      Get the complete current row. All column are available.
      Specified by:
      get in interface Cursor
      Returns:
      the complete row
    • getSearchRow

      public SearchRow getSearchRow()
      Description copied from interface: Cursor
      Get the current row. Only the data for indexed columns is available in this row.
      Specified by:
      getSearchRow in interface Cursor
      Returns:
      the search row
    • next

      public boolean next()
      Description copied from interface: Cursor
      Skip to the next row if one is available.
      Specified by:
      next in interface Cursor
      Returns:
      true if another row is available
    • nextCursor

      private void nextCursor()
    • find

      private void find(Value v)
    • previous

      public boolean previous()
      Description copied from interface: Cursor
      Skip to the previous row if one is available. No filtering is made here.
      Specified by:
      previous in interface Cursor
      Returns:
      true if another row is available