# Class Pool

java.lang.Object
org.mariadb.jdbc.internal.util.pool.Pool

All Implemented Interfaces:
  `AutoCloseable, PoolMBean`

public class Pool extends Object implements AutoCloseable, PoolMBean

## Constructor Summary

Constructors
Constructor
Description
`Pool(UrlParser urlParser, int poolIndex, ScheduledThreadPoolExecutor poolExecutor)`
Create pool from configuration.

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Close pool and underlying connections.
`boolean`
`equals(Object obj)`
`long`
`getActiveConnections()`
`MariaDbConnection`
`getConnection()`
Retrieve new connection.
`MariaDbConnection`
`getConnection(String username, String password)`
Get new connection from pool if user and password correspond to pool.
`long`
`getConnectionRequests()`
`GlobalStateInfo`
`getGlobalInfo()`
`long`
`getIdleConnections()`
`String`
`getPoolTag()`
`long`
`getTotalConnections()`
`UrlParser`
`getUrlParser()`
`int`
`hashCode()`
`void`
`resetStaticGlobal()`
JMX method to remove state (will be reinitialized on next connection creation).
`List<Long>`
`testGetConnectionIdleThreadIds()`
For testing purpose only.

### Methods inherited from class Object

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

## Constructor Details

### Pool

public Pool(UrlParser urlParser, int poolIndex, ScheduledThreadPoolExecutor poolExecutor)
Create pool from configuration.

Parameters:
  `urlParser` - configuration parser
  `poolIndex` - pool index to permit distinction of thread name
  `poolExecutor` - pools common executor

## Method Details

### getConnection

public MariaDbConnection getConnection() throws SQLException
Retrieve new connection. If possible return idle connection, if not, stack connection query, ask for a connection creation, and loop until a connection become idle / a new connection is created.

Returns:
  a connection object
Throws:
  `SQLException` - if no connection is created when reaching timeout (connectTimeout option)

### getConnection

public MariaDbConnection getConnection(String username, String password) throws SQLException
Get new connection from pool if user and password correspond to pool. If username and password are different from pool, will return a dedicated connection.

Parameters:
  `username` - username
  `password` - password
Returns:
  connection
Throws:
  `SQLException` - if any error occur during connection

### getUrlParser

public UrlParser getUrlParser()

### close

public void close() throws InterruptedException
Close pool and underlying connections.

Specified by:
  `close` in interface `AutoCloseable`
Throws:
  `InterruptedException` - if interrupted

### getPoolTag

public String getPoolTag()

### equals

public boolean equals(Object obj)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### getGlobalInfo

public GlobalStateInfo getGlobalInfo()

### getActiveConnections

public long getActiveConnections()

Specified by:
  `getActiveConnections` in interface `PoolMBean`

### getTotalConnections

public long getTotalConnections()

Specified by:
  `getTotalConnections` in interface `PoolMBean`

### getIdleConnections

public long getIdleConnections()

Specified by:
  `getIdleConnections` in interface `PoolMBean`

### getConnectionRequests

public long getConnectionRequests()

Specified by:
  `getConnectionRequests` in interface `PoolMBean`

### testGetConnectionIdleThreadIds

public List<Long> testGetConnectionIdleThreadIds()
For testing purpose only.

Returns:
  current thread id's

### resetStaticGlobal

public void resetStaticGlobal()
JMX method to remove state (will be reinitialized on next connection creation).

Specified by:
  `resetStaticGlobal` in interface `PoolMBean`