org.h2.result

## Class LocalResultImpl

- java.lang.Object
- - org.h2.result.LocalResultImpl

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

    public class LocalResultImpl
    extends java.lang.Object
    implements LocalResult

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 and Description
`LocalResultImpl()` Construct a local result object.
`LocalResultImpl(Session session, Expression[] expressions, int visibleColumnCount, int resultColumnCount)` Construct a local result object.

### Method Summary

Methods
`void` `addRow(Value... values)` Add a row to this object.
`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.
`LocalResultImpl` `createShallowCopy(SessionInterface targetSession)` Create a shallow copy of the result set.
`Value[]` `currentRow()` Get the current row.
`void` `done()` This method is called after all rows have been added.
`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.
`int` `getRowCount()` Get the number of rows in this object.
`int` `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` `isAutoIncrement(int i)` Check if this is an auto-increment column.
`boolean` `isClosed()` Check if this result set is closed.
`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` `setLimit(int 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(int 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

#### LocalResultImpl

    public LocalResultImpl()

Construct a local result object.

#### LocalResultImpl

    public LocalResultImpl(Session 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

#### 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)

Description copied from interface: `LocalResult`
Redefine count of maximum rows holds in memory for the result.

Specified by:
  `setMaxMemoryRows` in interface `LocalResult`
Parameters:
  `maxValue` - Maximum rows count in memory.
See Also:
  `SysProperties.MAX_MEMORY_ROWS`

#### createShallowCopy

    public LocalResultImpl createShallowCopy(SessionInterface 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)

Description copied from interface: `LocalResult`
Sets sort order to be used by this result. When rows are presorted by the query this method should not be used.

Specified by:
  `setSortOrder` in interface `LocalResult`
Parameters:
  `sort` - the sort order

#### setDistinct

    public void setDistinct()

Remove duplicate rows.

Specified by:
  `setDistinct` in interface `LocalResult`

#### setDistinct

    public void setDistinct(int[] distinctIndexes)

Remove rows with duplicates in columns with specified indexes.

Specified by:
  `setDistinct` in interface `LocalResult`
Parameters:
  `distinctIndexes` - distinct indexes

#### removeDistinct

    public void removeDistinct(Value[] values)

Remove the row from the result set if it exists.

Specified by:
  `removeDistinct` in interface `LocalResult`
Parameters:
  `values` - the row

#### containsDistinct

    public boolean containsDistinct(Value[] values)

Check if this result set contains the given row.

Specified by:
  `containsDistinct` in interface `LocalResult`
Parameters:
  `values` - the row
Returns:
  true if the row exists

#### containsNull

    public boolean containsNull()

Description copied from interface: `LocalResult`
Check if this result set contains a NULL value. This method may reset this result.

Specified by:
  `containsNull` in interface `LocalResult`
Returns:
  true if there is a NULL value

#### 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`

#### currentRow

    public Value[] currentRow()

Description copied from interface: `ResultInterface`
Get the current row.

Specified by:
  `currentRow` in interface `ResultInterface`
Returns:
  the 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 int 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

#### 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.

Specified by:
  `done` in interface `LocalResult`

#### getRowCount

    public int getRowCount()

Description copied from interface: `ResultInterface`
Get the number of rows in this object.

Specified by:
  `getRowCount` in interface `ResultInterface`
Specified by:
  `getRowCount` in interface `ResultTarget`
Returns:
  the number of rows

#### 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(int limit)

Set the number of rows that this result will return at the maximum.

Specified by:
  `setLimit` in interface `LocalResult`
Parameters:
  `limit` - the limit (-1 means no limit, 0 means no rows)

#### setFetchPercent

    public void setFetchPercent(boolean fetchPercent)

Specified by:
  `setFetchPercent` in interface `LocalResult`
Parameters:
  `fetchPercent` - whether limit expression specifies percentage of rows

#### setWithTies

    public void setWithTies(SortOrder withTiesSortOrder)

Description copied from interface: `LocalResult`
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.

Specified by:
  `setWithTies` in interface `LocalResult`
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_*

#### isAutoIncrement

    public boolean isAutoIncrement(int i)

Description copied from interface: `ResultInterface`
Check if this is an auto-increment column.

Specified by:
  `isAutoIncrement` in interface `ResultInterface`
Parameters:
  `i` - the column number (starting with 0)
Returns:
  true for auto-increment columns

#### setOffset

    public void setOffset(int offset)

Set the offset of the first row to return.

Specified by:
  `setOffset` in interface `LocalResult`
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