Package org.h2.result

# Class LocalResult

java.lang.Object
org.h2.result.LocalResult

All Implemented Interfaces:
  `AutoCloseable`, `ResultInterface`, `ResultTarget`

public class LocalResult extends 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

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.
`String`
`getAlias(int i)`
Get the column alias name for the column.
`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.
`String`
`getSchemaName(int i)`
Get the schema name for the column, if one exists.
`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.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

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

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

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

### getRowCount

public long 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(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 `AutoCloseable`
Specified by:
  `close` in interface `ResultInterface`

### getAlias

public 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 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 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 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 String toString()

Overrides:
  `toString` in class `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