Package com.google.cloud.spanner
Interface ResultSet
- All Superinterfaces:
AutoCloseable
,StructReader
- All Known Subinterfaces:
AsyncResultSet
,PartitionedQueryResultSet
- All Known Implementing Classes:
ForwardingAsyncResultSet
,ForwardingResultSet
Provides access to the data returned by a Cloud Spanner read or query.
ResultSet
allows a
single row to be inspected at a time through the methods from the StructReader
interface,
in the order that the rows were returned by the read or query. The result set can be positioned
over the next row, if one exists, by calling next()
; this method returns false
when all rows returned have been seen. The result set is initially positioned before the first
row, so a call to next()
is required before the first row can be inspected.
ResultSet
implementations may buffer data ahead and/or maintain a persistent streaming
connection to the remote service until all data has been returned or the resultSet closed. As
such, it is important that all uses of ResultSet
either fully consume it (that is, call
next()
until false
is returned or it throws an exception) or explicitly call
close()
: failure to do so may result in wasted work or leaked resources.
ResultSet
implementations are not required to be thread-safe: if methods are called
from multiple threads, external synchronization must be used.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Explicitly close the result set, releasing any associated resources.Creates an immutable version of the row that the result set is positioned over.default ResultSetMetadata
Returns theResultSetMetadata
for thisResultSet
.getStats()
Returns theResultSetStats
for the query only if the query was executed in either thePLAN
or thePROFILE
mode via theReadContext.analyzeQuery(Statement, com.google.cloud.spanner.ReadContext.QueryAnalyzeMode)
method or for DML statements inReadContext.executeQuery(Statement, QueryOption...)
.boolean
next()
Advances the result set to the next row, returning false if no such row exists.Methods inherited from interface com.google.cloud.spanner.StructReader
getBigDecimal, getBigDecimal, getBigDecimalList, getBigDecimalList, getBoolean, getBoolean, getBooleanArray, getBooleanArray, getBooleanList, getBooleanList, getBytes, getBytes, getBytesList, getBytesList, getColumnCount, getColumnIndex, getColumnType, getColumnType, getDate, getDate, getDateList, getDateList, getDouble, getDouble, getDoubleArray, getDoubleArray, getDoubleList, getDoubleList, getJson, getJson, getJsonList, getJsonList, getLong, getLong, getLongArray, getLongArray, getLongList, getLongList, getPgJsonb, getPgJsonb, getPgJsonbList, getPgJsonbList, getString, getString, getStringList, getStringList, getStructList, getStructList, getTimestamp, getTimestamp, getTimestampList, getTimestampList, getType, getValue, getValue, isNull, isNull
-
Method Details
-
next
Advances the result set to the next row, returning false if no such row exists. This method may block.- Throws:
SpannerException
-
getCurrentRowAsStruct
Struct getCurrentRowAsStruct()Creates an immutable version of the row that the result set is positioned over. This may involve copying internal data structures, and so converting all rows toStruct
objects is generally more expensive than processing theResultSet
directly. -
close
void close()Explicitly close the result set, releasing any associated resources. This must always be called when disposing of aResultSet
beforenext()
has returnedfalse
or raised an exception. Callingclose()
is also allowed if the result set has been fully consumed, so a recommended practice is to unconditionally close the result set once it is done with, typically using a try-with-resources construct.- Specified by:
close
in interfaceAutoCloseable
-
getStats
Returns theResultSetStats
for the query only if the query was executed in either thePLAN
or thePROFILE
mode via theReadContext.analyzeQuery(Statement, com.google.cloud.spanner.ReadContext.QueryAnalyzeMode)
method or for DML statements inReadContext.executeQuery(Statement, QueryOption...)
. Attempts to call this method on aResultSet
not obtained fromanalyzeQuery
orexecuteQuery
will return anull
ResultSetStats
. This method must be called afternext()
has returned @{code false}. Calling it before that will result innull
ResultSetStats
too. -
getMetadata
Returns theResultSetMetadata
for thisResultSet
. This is method may only be called after callingnext()
at least once.
-