public interface ResultSet extends AutoCloseable, StructReader
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.
Modifier and Type | Method and Description |
---|---|
void |
close()
Explicitly close the result set, releasing any associated resources.
|
Struct |
getCurrentRowAsStruct()
Creates an immutable version of the row that the result set is positioned over.
|
ResultSetStats |
getStats()
Returns the
ResultSetStats for the query only if the query was executed in either the
PLAN or the PROFILE mode via the ReadContext.analyzeQuery(Statement,
com.google.cloud.spanner.ReadContext.QueryAnalyzeMode) method or for DML statements in ReadContext#executeQuery(Statement, QueryOption...) . |
boolean |
next()
Advances the result set to the next row, returning false if no such row exists.
|
getBoolean, getBoolean, getBooleanArray, getBooleanArray, getBooleanList, getBooleanList, getBytes, getBytes, getBytesList, getBytesList, getColumnCount, getColumnIndex, getColumnType, getColumnType, getDate, getDate, getDateList, getDateList, getDouble, getDouble, getDoubleArray, getDoubleArray, getDoubleList, getDoubleList, getLong, getLong, getLongArray, getLongArray, getLongList, getLongList, getString, getString, getStringList, getStringList, getStructList, getStructList, getTimestamp, getTimestamp, getTimestampList, getTimestampList, getType, isNull, isNull
boolean next() throws SpannerException
SpannerException
Struct getCurrentRowAsStruct()
Struct
objects
is generally more expensive than processing the ResultSet
directly.void close()
ResultSet
before next()
has returned false
or
raised an exception. Calling close()
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.close
in interface AutoCloseable
@Nullable ResultSetStats getStats()
ResultSetStats
for the query only if the query was executed in either the
PLAN
or the PROFILE
mode via the ReadContext.analyzeQuery(Statement,
com.google.cloud.spanner.ReadContext.QueryAnalyzeMode)
method or for DML statements in ReadContext#executeQuery(Statement, QueryOption...)
. Attempts to call this method on a ResultSet
not obtained from analyzeQuery
or executeQuery
will return a null
ResultSetStats
. This method must be called after next()
has
returned @{code false}. Calling it before that will result in null
ResultSetStats
too.Copyright © 2019 Google LLC. All rights reserved.