Interface ReadContext

    • Method Detail

      • read

        ResultSet read​(String table,
                       KeySet keys,
                       Iterable<String> columns,
                       Options.ReadOption... options)
        Reads zero or more rows from a database.

        Implementations may or may not block in the initial read(...) call; for those that do not, the remote call will be initiated immediately but blocking on the response is deferred to the first ResultSet.next() call. Regardless of blocking behavior, any SpannerException is deferred to the first or subsequent ResultSet.next() call.

        
         ReadContext readContext = dbClient.singleUse();
         ResultSet resultSet =
             readContext.read(
                 "Albums",
                 // KeySet.all() can be used to read all rows in a table. KeySet exposes other
                 // methods to read only a subset of the table.
                 KeySet.all(),
                 Arrays.asList("SingerId", "AlbumId", "AlbumTitle"));
         
        Parameters:
        table - the name of the table to read
        keys - the keys and ranges of rows to read. Regardless of ordering in keys, rows are returned in their natural key order.
        columns - the columns to read
        options - the options to configure the read
      • readUsingIndex

        ResultSet readUsingIndex​(String table,
                                 String index,
                                 KeySet keys,
                                 Iterable<String> columns,
                                 Options.ReadOption... options)
        Reads zero or more rows from a database using an index.

        Implementations may or may not block in the initial read(...) call; for those that do not, the remote call will be initiated immediately but blocking on the response is deferred to the first ResultSet.next() call. Regardless of blocking behavior, any SpannerException is deferred to the first or subsequent ResultSet.next() call.

        
         ReadContext readContext = dbClient.singleUse();
         Struct row =
             readContext.readRowUsingIndex("Albums", "AlbumsByAlbumId", Key.of(1, "Green"),
                 Arrays.asList("AlbumId", "AlbumTitle"));
         
        Parameters:
        table - the name of the table to read
        index - the name of the index on table to use
        keys - the keys and ranges of index rows to read. Regardless of ordering in keys, rows are returned in the natural key order of the index.
        columns - the columns to read
        options - the options to configure the read
      • readRow

        @Nullable
        Struct readRow​(String table,
                       Key key,
                       Iterable<String> columns)
        Reads a single row from a database, returning null if the row does not exist.
        
         ReadContext readContext = dbClient.singleUse();
         Struct row =
             readContext.readRow("Albums", Key.of(2, 1), Arrays.asList("MarketingBudget"));
         
        Parameters:
        table - the name of the table to read
        key - the row to read
        columns - the columns to return
      • readRowUsingIndex

        @Nullable
        Struct readRowUsingIndex​(String table,
                                 String index,
                                 Key key,
                                 Iterable<String> columns)
        Reads a single row from a database using an index, returning null if the row does not exist.
        
         ReadContext readContext = dbClient.singleUse();
         Struct row =
             readContext.readRowUsingIndex("Albums", "AlbumsByAlbumId", Key.of(1, "Green"),
                 Arrays.asList("AlbumId", "AlbumTitle"));
         
        Parameters:
        table - the name of the table to read
        index - the name of the index on table to use
        key - the index row to read
        columns - the columns to return
      • executeQuery

        ResultSet executeQuery​(Statement statement,
                               Options.QueryOption... options)
        Executes a query against the database.

        Implementations may or may not block in the initial executeQuery(...) call; for those that do not, the remote call will be initiated immediately but blocking on the response is deferred to the first ResultSet.next() call. Regardless of blocking behavior, any SpannerException is deferred to the first or subsequent ResultSet.next() call.

        
         // Rows without an explicit value for MarketingBudget will have a MarketingBudget equal to
         // null.
         ReadContext readContext = dbClient.singleUse();
         ResultSet resultSet =
             readContext.executeQuery(
                 Statement.of(
                     "SELECT SingerId, AlbumId, MarketingBudget, LastUpdateTime FROM Albums"));
         
        Parameters:
        statement - the query statement to execute
        options - the options to configure the query
      • analyzeQuery

        ResultSet analyzeQuery​(Statement statement,
                               ReadContext.QueryAnalyzeMode queryMode)
        Analyzes a query and returns query plan and/or query execution statistics information.

        The query plan and query statistics information is contained in ResultSetStats that can be accessed by calling ResultSet.getStats() on the returned ResultSet.

        
         ReadContext rc = dbClient.singleUse();
         ResultSet resultSet =
             rc.analyzeQuery(
                 Statement.of("SELECT SingerId, AlbumId, MarketingBudget FROM Albums"),
                 ReadContext.QueryAnalyzeMode.PROFILE);
         while (resultSet.next()) {
           // Discard the results. We're only processing because getStats() below requires it.
           resultSet.getCurrentRowAsStruct();
         }
         ResultSetStats stats = resultSet.getStats();
         
        Parameters:
        statement - the query statement to execute
        queryMode - the mode in which to execute the query
      • close

        void close()
        Closes this read context and frees up the underlying resources.
        Specified by:
        close in interface AutoCloseable