Package org.h2.result

Class LocalResult

  • All Implemented Interfaces:
    java.lang.AutoCloseable, ResultInterface, ResultTarget

    public class LocalResult
    extends java.lang.Object
    implements ResultInterface, ResultTarget
    A local result set contains all row data of a result set. This is the object generated by engine, and it is also used directly by the ResultSet class in the embedded mode. If the result does not fit in memory, it is written to a temporary file.
    • Constructor Summary

      Constructors 
      Constructor Description
      LocalResult()
      Construct a local result object.
      LocalResult​(SessionLocal session, Expression[] expressions, int visibleColumnCount, int resultColumnCount)
      Construct a local result object.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addRow​(Value... values)
      Add a row to this object.
      void addRowForTable​(Row row)
      Add a row for a table.
      void close()
      Close the result and delete any temporary files
      boolean containsDistinct​(Value[] values)
      Check if this result set contains the given row.
      boolean containsNull()
      Check if this result set contains a NULL value.
      LocalResult createShallowCopy​(Session targetSession)
      Create a shallow copy of the result set.
      Value[] currentRow()
      Get the current row.
      Row currentRowForTable()
      Retrieve the current row
      void done()
      This method is called after all rows have been added.
      static LocalResult forTable​(SessionLocal session, Table table)
      Constructs a new local result object for the specified table.
      java.lang.String getAlias​(int i)
      Get the column alias name for the column.
      java.lang.String getColumnName​(int i)
      Get the column name.
      TypeInfo getColumnType​(int i)
      Get the column data type.
      int getFetchSize()
      Get the current fetch size for this result set.
      int getNullable​(int i)
      Check if this column is nullable.
      long getRowCount()
      Get the number of rows in this object.
      long getRowId()
      Get the current row id, starting with 0.
      java.lang.String getSchemaName​(int i)
      Get the schema name for the column, if one exists.
      java.lang.String getTableName​(int i)
      Get the table name for the column, if one exists.
      int getVisibleColumnCount()
      Get the number of visible columns.
      boolean hasNext()
      Check if this result has more rows to fetch.
      boolean isAfterLast()
      Check if the current position is after last row.
      boolean isClosed()
      Check if this result set is closed.
      boolean isIdentity​(int i)
      Check if this is an identity column.
      boolean isLazy()
      Check if this a lazy execution result.
      void limitsWereApplied()
      A hint that sorting, offset and limit may be ignored by this result because they were applied during the query.
      boolean needToClose()
      Check if this result set should be closed, for example because it is buffered using a temporary file.
      boolean next()
      Go to the next row.
      void removeDistinct​(Value[] values)
      Remove the row from the result set if it exists.
      void reset()
      Go to the beginning of the result, that means before the first row.
      void setDistinct()
      Remove duplicate rows.
      void setDistinct​(int[] distinctIndexes)
      Remove rows with duplicates in columns with specified indexes.
      void setFetchPercent​(boolean fetchPercent)  
      void setFetchSize​(int fetchSize)
      Set the fetch size for this result set.
      void setForDataChangeDeltaTable()
      Sets value collection mode for data change delta tables.
      void setInPredicateValueListResult​(int[] inPredicateSortTypes)
      Configures result to hold value list of the IN predicate.
      void setLimit​(long limit)
      Set the number of rows that this result will return at the maximum.
      void setMaxMemoryRows​(int maxValue)
      Redefine count of maximum rows holds in memory for the result.
      void setOffset​(long offset)
      Set the offset of the first row to return.
      void setSortOrder​(SortOrder sort)
      Sets sort order to be used by this result.
      void setWithTies​(SortOrder withTiesSortOrder)
      Enables inclusion of tied rows to result and sets the sort order for tied rows.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • LocalResult

        public LocalResult()
        Construct a local result object.
      • LocalResult

        public LocalResult​(SessionLocal session,
                           Expression[] expressions,
                           int visibleColumnCount,
                           int resultColumnCount)
        Construct a local result object.
        Parameters:
        session - the session
        expressions - the expression array
        visibleColumnCount - the number of visible columns
        resultColumnCount - the number of columns including visible columns and additional virtual columns for ORDER BY and DISTINCT ON clauses
    • Method Detail

      • forTable

        public static LocalResult forTable​(SessionLocal session,
                                           Table table)
        Constructs a new local result object for the specified table.
        Parameters:
        session - the session
        table - the table
        Returns:
        the local result
      • isLazy

        public boolean isLazy()
        Description copied from interface: ResultInterface
        Check if this a lazy execution result.
        Specified by:
        isLazy in interface ResultInterface
        Returns:
        true if it is a lazy result
      • setMaxMemoryRows

        public void setMaxMemoryRows​(int maxValue)
        Redefine count of maximum rows holds in memory for the result.
        Parameters:
        maxValue - Maximum rows count in memory.
        See Also:
        SysProperties.MAX_MEMORY_ROWS
      • setForDataChangeDeltaTable

        public void setForDataChangeDeltaTable()
        Sets value collection mode for data change delta tables.
      • createShallowCopy

        public LocalResult createShallowCopy​(Session targetSession)
        Create a shallow copy of the result set. The data and a temporary table (if there is any) is not copied.
        Specified by:
        createShallowCopy in interface ResultInterface
        Parameters:
        targetSession - the session of the copy
        Returns:
        the copy if possible, or null if copying is not possible
      • setSortOrder

        public void setSortOrder​(SortOrder sort)
        Sets sort order to be used by this result. When rows are presorted by the query this method should not be used.
        Parameters:
        sort - the sort order
      • setDistinct

        public void setDistinct()
        Remove duplicate rows.
      • setDistinct

        public void setDistinct​(int[] distinctIndexes)
        Remove rows with duplicates in columns with specified indexes.
        Parameters:
        distinctIndexes - distinct indexes
      • setInPredicateValueListResult

        public void setInPredicateValueListResult​(int[] inPredicateSortTypes)
        Configures result to hold value list of the IN predicate.
        Parameters:
        inPredicateSortTypes - sort order bit masks or an empty array
      • containsDistinct

        public boolean containsDistinct​(Value[] values)
        Check if this result set contains the given row.
        Parameters:
        values - the row
        Returns:
        true if the row exists
      • containsNull

        public boolean containsNull()
        Check if this result set contains a NULL value. This method may reset this result.
        Returns:
        true if there is a NULL value
      • removeDistinct

        public void removeDistinct​(Value[] values)
        Remove the row from the result set if it exists.
        Parameters:
        values - the row
      • reset

        public void reset()
        Description copied from interface: ResultInterface
        Go to the beginning of the result, that means before the first row.
        Specified by:
        reset in interface ResultInterface
      • currentRowForTable

        public Row currentRowForTable()
        Retrieve the current row
        Returns:
        row
      • next

        public boolean next()
        Description copied from interface: ResultInterface
        Go to the next row.
        Specified by:
        next in interface ResultInterface
        Returns:
        true if a row exists
      • getRowId

        public long getRowId()
        Description copied from interface: ResultInterface
        Get the current row id, starting with 0. -1 is returned when next() was not called yet.
        Specified by:
        getRowId in interface ResultInterface
        Returns:
        the row id
      • isAfterLast

        public boolean isAfterLast()
        Description copied from interface: ResultInterface
        Check if the current position is after last row.
        Specified by:
        isAfterLast in interface ResultInterface
        Returns:
        true if after last
      • addRowForTable

        public void addRowForTable​(Row row)
        Add a row for a table.
        Parameters:
        row - the row to add
      • addRow

        public void addRow​(Value... values)
        Add a row to this object.
        Specified by:
        addRow in interface ResultTarget
        Parameters:
        values - the row to add
      • getVisibleColumnCount

        public int getVisibleColumnCount()
        Description copied from interface: ResultInterface
        Get the number of visible columns. More columns may exist internally for sorting or grouping.
        Specified by:
        getVisibleColumnCount in interface ResultInterface
        Returns:
        the number of columns
      • done

        public void done()
        This method is called after all rows have been added.
      • limitsWereApplied

        public void limitsWereApplied()
        Description copied from interface: ResultTarget
        A hint that sorting, offset and limit may be ignored by this result because they were applied during the query. This is useful for WITH TIES clause because result may contain tied rows above limit.
        Specified by:
        limitsWereApplied in interface ResultTarget
      • hasNext

        public boolean hasNext()
        Description copied from interface: ResultInterface
        Check if this result has more rows to fetch.
        Specified by:
        hasNext in interface ResultInterface
        Returns:
        true if it has
      • setLimit

        public void setLimit​(long limit)
        Set the number of rows that this result will return at the maximum.
        Parameters:
        limit - the limit (-1 means no limit, 0 means no rows)
      • setFetchPercent

        public void setFetchPercent​(boolean fetchPercent)
        Parameters:
        fetchPercent - whether limit expression specifies percentage of rows
      • setWithTies

        public void setWithTies​(SortOrder withTiesSortOrder)
        Enables inclusion of tied rows to result and sets the sort order for tied rows. The specified sort order must be the same as sort order if sort order was set. Passed value will be used if sort order was not set that is possible when rows are presorted.
        Parameters:
        withTiesSortOrder - the sort order for tied rows
      • needToClose

        public boolean needToClose()
        Description copied from interface: ResultInterface
        Check if this result set should be closed, for example because it is buffered using a temporary file.
        Specified by:
        needToClose in interface ResultInterface
        Returns:
        true if close should be called.
      • close

        public void close()
        Description copied from interface: ResultInterface
        Close the result and delete any temporary files
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface ResultInterface
      • getAlias

        public java.lang.String getAlias​(int i)
        Description copied from interface: ResultInterface
        Get the column alias name for the column.
        Specified by:
        getAlias in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        the alias name
      • getTableName

        public java.lang.String getTableName​(int i)
        Description copied from interface: ResultInterface
        Get the table name for the column, if one exists.
        Specified by:
        getTableName in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        the table name or null
      • getSchemaName

        public java.lang.String getSchemaName​(int i)
        Description copied from interface: ResultInterface
        Get the schema name for the column, if one exists.
        Specified by:
        getSchemaName in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        the schema name or null
      • getColumnName

        public java.lang.String getColumnName​(int i)
        Description copied from interface: ResultInterface
        Get the column name.
        Specified by:
        getColumnName in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        the column name
      • getColumnType

        public TypeInfo getColumnType​(int i)
        Description copied from interface: ResultInterface
        Get the column data type.
        Specified by:
        getColumnType in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        the column data type
      • getNullable

        public int getNullable​(int i)
        Description copied from interface: ResultInterface
        Check if this column is nullable.
        Specified by:
        getNullable in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        Column.NULLABLE_*
      • isIdentity

        public boolean isIdentity​(int i)
        Description copied from interface: ResultInterface
        Check if this is an identity column.
        Specified by:
        isIdentity in interface ResultInterface
        Parameters:
        i - the column number (starting with 0)
        Returns:
        true for identity columns
      • setOffset

        public void setOffset​(long offset)
        Set the offset of the first row to return.
        Parameters:
        offset - the offset
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • isClosed

        public boolean isClosed()
        Check if this result set is closed.
        Specified by:
        isClosed in interface ResultInterface
        Returns:
        true if it is
      • getFetchSize

        public int getFetchSize()
        Description copied from interface: ResultInterface
        Get the current fetch size for this result set.
        Specified by:
        getFetchSize in interface ResultInterface
        Returns:
        the fetch size
      • setFetchSize

        public void setFetchSize​(int fetchSize)
        Description copied from interface: ResultInterface
        Set the fetch size for this result set.
        Specified by:
        setFetchSize in interface ResultInterface
        Parameters:
        fetchSize - the new fetch size