# Class LazyThriftResult

java.lang.Object
com.databricks.jdbc.api.impl.LazyThriftResult

All Implemented Interfaces:
  `IExecutionResult`

public class LazyThriftResult extends Object implements IExecutionResult

## Constructor Summary

Constructors
Constructor
Description
`LazyThriftResult(TFetchResultsResp initialResponse, IDatabricksStatementInternal statement, IDatabricksSession session)`
Creates a new LazyThriftResult that lazily fetches data on demand.

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Closes this result and releases associated resources.
`long`
`getChunkCount()`
Gets the chunk count.
`long`
`getCurrentRow()`
Gets the current row index (0-based).
`Object`
`getObject(int columnIndex)`
Gets the value at the specified column index for the current row.
`long`
`getRowCount()`
Gets the number of rows in the current batch.
`long`
`getTotalRowsFetched()`
Gets the total number of rows fetched from the server so far.
`boolean`
`hasNext()`
Checks if there are more rows available without advancing the cursor.
`boolean`
`isCompletelyFetched()`
Checks if all data has been fetched from the server.
`boolean`
`next()`
Moves the cursor to the next row.

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

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

## Constructor Details

### LazyThriftResult

public LazyThriftResult(TFetchResultsResp initialResponse, IDatabricksStatementInternal statement, IDatabricksSession session) throws DatabricksSQLException
Creates a new LazyThriftResult that lazily fetches data on demand.

Parameters:
  `initialResponse` - the initial response from the server
  `statement` - the statement that generated this result
  `session` - the session to use for fetching additional data
Throws:
  `DatabricksSQLException` - if the initial response cannot be processed

## Method Details

### getObject

public Object getObject(int columnIndex) throws DatabricksSQLException
Gets the value at the specified column index for the current row.

Specified by:
  `getObject` in interface `IExecutionResult`
Parameters:
  `columnIndex` - the zero-based column index
Returns:
  the value at the specified column
Throws:
  `DatabricksSQLException` - if the result is closed, cursor is invalid, or column index is out of bounds

### getCurrentRow

public long getCurrentRow()
Gets the current row index (0-based). Returns -1 if before the first row.

Specified by:
  `getCurrentRow` in interface `IExecutionResult`
Returns:
  the current row index

### next

public boolean next() throws DatabricksSQLException
Moves the cursor to the next row. Fetches additional data from server if needed.

Specified by:
  `next` in interface `IExecutionResult`
Returns:
  true if there is a next row, false if at the end
Throws:
  `DatabricksSQLException` - if an error occurs while fetching data

### hasNext

public boolean hasNext()
Checks if there are more rows available without advancing the cursor.

Specified by:
  `hasNext` in interface `IExecutionResult`
Returns:
  true if there are more rows, false otherwise

### close

public void close()
Closes this result and releases associated resources.

Specified by:
  `close` in interface `IExecutionResult`

### getRowCount

public long getRowCount()
Gets the number of rows in the current batch.

Specified by:
  `getRowCount` in interface `IExecutionResult`
Returns:
  the number of rows in the current batch

### getChunkCount

public long getChunkCount()
Gets the chunk count. Always returns 0 for thrift columnar results.

Specified by:
  `getChunkCount` in interface `IExecutionResult`
Returns:
  0 (thrift results don't use chunks like Arrow)

### getTotalRowsFetched

public long getTotalRowsFetched()
Gets the total number of rows fetched from the server so far. This is different from getRowCount() which returns current batch size.

Returns:
  the total number of rows fetched from the server

### isCompletelyFetched

public boolean isCompletelyFetched()
Checks if all data has been fetched from the server.

Returns:
  true if all data has been fetched (either reached end or maxRows limit)