@PLUGIN@ Database
=================

DESCRIPTION
-----------
Test metadata is stored in a [CI database](#supported-dbs) which can be in the
Gerrit review database or a completely separate database.

###  @PLUGIN@ schema initialization

Schema initialization
---------------------

The database is initialized and the schema is created during an initial
site creation.

```
*** SQL Database for @PLUGIN@
***

Database server type           [h2]: ?
       Supported options are:
         derby
         h2
         mysql
         oracle
         postgresql
Database server type           [h2]: h2

Initialized <gerrit-site>
```

###  @PLUGIN@ schema upgrade

Schema upgrade
--------------

Schema upgrade takes place in the init plugin step:

```
*** SQL Database for @PLUGIN@
***

Database server type           [h2]:

Upgrading schema to 2 ...
Migrating data to schema 2 ...
```

###  @PLUGIN@ configure-db

Configuration
-------------

The @PLUGIN@ database can be configured in the [gerrit.config]
(../../../Documentation/config-gerrit.html#_file_code_etc_gerrit_config_code)
file

The [database section](#database-params) configures where the @PLUGIN@ plugin
stores per patchset test results.

```
[plugin "@PLUGIN@"]
    dbType = mysql
    hostname = localhost
    database = cidata
    username = gerrit2
    password = secret
```

###  @PLUGIN@ supported databases
 * H2
 * Apache Derby
 * [MySQL](mysql-setup-example.md)
 * Oracle
 * PostgreSQL

###  Database Parameters

|Paramter|    |Description|
|:-------|:---|:----------|
|database.dbType|required|Type of database server to connect to (default: H2)|
|database.username|required|Username to connect to the database server as|
|database.password|required|Password to authenticate to the database server with|
|database.url|required|'jdbc:' URL for the database|
|database.driver|optional|Name of the JDBC driver class to connect to the database with|
|database.connectionPool|optional|If true, use connection pooling for database connections|
|database.poolLimit|optional|Maximum number of open database connections|
|database.poolMinIdle|optional|Minimum number of connections to keep idle in the pool|
|database.poolMaxIdle|optional|Maximum number of connections to keep idle in the pool|
|database.poolMaxWait|optional|Maximum amount of time a request processing thread will wait to acquire a database connection from the pool|
|database.dataSourceInterceptorClass|optional|Class that implements DataSourceInterceptor interface to monitor SQL activity|

* ms, milliseconds
* s, sec, second, seconds
* m, min, minute, minutes
* h, hr, hour, hours

If a unit suffix is not specified, `milliseconds` is assumed.

Default is `30 seconds`.

###  @PLUGIN@ access-database

Acccesing Database
------------------

@PLUGIN@ plugin provides an administrative interface to the database.

'ssh' -p <port> <host> '@PLUGIN@ gsql' [--format {PRETTY | JSON | JSON_SINGLE}] [-c QUERY]

> ssh -p 29418 localhost verify-status gsql -c "'show tables;'"

ACCESS
------
Caller must be a member of a group that is granted the
'Access Ci Database' capability (provided by this plugin).

SEE ALSO
--------

* [Example Mysql Setup](mysql-setup-example.md)
* [Database Setup](../../../Documentation/database-setup.html)
* [Automatic Site Initialization](../../../Documentation/config-auto-site-initialization.html)
* [Database Settings](../../../Documentation/config-gerrit.html#database)
* [Gerrit gsql Command](../../../Documentation/cmd-gsql.html)

GERRIT
------
Part of [Gerrit Code Review](../../../Documentation/index.html)
