Module org.firebirdsql.jaybird
Package org.firebirdsql.management

# Class FBTableStatisticsManager

java.lang.Object
org.firebirdsql.management.FBTableStatisticsManager

All Implemented Interfaces:
  `AutoCloseable`

@Volatile(reason="Experimental") public final class FBTableStatisticsManager extends Object implements AutoCloseable
Provides access to the table statistics of a `Connection`.

The table statistics are execution statistics of the specific connection, and are not global statistics.

This manager retains a reference to underlying `FbDatabase` instance and holds a cache of table names. Closing this manager will remove the reference the database handle (but not close it!) and releases the cache.

This class is not thread-safe (though its use of the underlying connection is thread-safe).

Since:
  5
Author:
  Mark Rotteveel

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Clears the reference to the connection and clears the cache.
  `Map<String,TableStatistics>`
  `getTableStatistics()`
  Obtains a snapshot of the table statistics of this connection.
  `static FBTableStatisticsManager`
  `of(Connection connection)`
  Creates a table statistics manager for the current connection.

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

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

- ## Method Details

  - ### of

    public static FBTableStatisticsManager of(Connection connection) throws SQLException
    Creates a table statistics manager for the current connection.
    Parameters:
      `connection` - Connection to gather statistics on.
    Returns:
      a table statistics manager
    Throws:
      `SQLException` - if `connection` is closed

  - ### getTableStatistics

    public Map<String,TableStatistics> getTableStatistics() throws SQLException
    Obtains a snapshot of the table statistics of this connection.

    A table is only present in the map if this connection touched it in a way which generated a statistic.

    Returns:
      map from table name to table statistics
    Throws:
      `InfoTruncatedException` - if a truncated response is received, after retrying 3 times (total: 4 attempts) while increasing the buffer size; it is possible that subsequent calls to this method may recover (as that will increase the buffer size even more)
      `SQLException` - if the connection is closed, or if obtaining the statistics failed due to a database access error

  - ### close

    public void close()
    Clears the reference to the connection and clears the cache.

    This method does not close the connection wrapped by this manager.

    Closing a table statistics manager is not required. It can be used to clean up early, or to prevent a user of this class from gathering further statistics.

    Specified by:
      `close` in interface `AutoCloseable`