= gerrit gsql

== NAME
gerrit gsql - Administrative interface to active database

== SYNOPSIS
[verse]
--
_ssh_ -p <port> <host> _gerrit gsql_
  [--format {PRETTY | JSON | JSON_SINGLE}]
  [-c QUERY]
--

== DESCRIPTION
Provides interactive query support directly against the underlying
SQL database used by the host Gerrit server.  All SQL statements
are supported, including SELECT, UPDATE, INSERT, DELETE and ALTER.

== OPTIONS
--format::
	Set the format records are output in.  In PRETTY (the
	default) records are displayed in a tabular output suitable
	for reading by a human on a sufficiently wide terminal.
	In JSON mode records are output as JSON objects using the
	column names as the property names, one object per line.
	In JSON_SINGLE mode the whole result set is output as a
	single JSON object.

-c::
	Execute the single query statement supplied, and then exit.

== ACCESS
Caller must have been granted the
link:access-control.html#capability_accessDatabase[Access Database]
global capability.

== SCRIPTING
Intended for interactive use only, unless format is JSON, or
JSON_SINGLE.

== EXAMPLES
To manually correct a user's SSH user name:

----
	$ ssh -p 29418 review.example.com gerrit gsql
	Welcome to Gerrit Code Review v2.0.25
	(PostgreSQL 8.3.8)

	Type '\h' for help.  Type '\r' to clear the buffer.

	gerrit> update accounts set ssh_user_name = 'alice' where account_id=1;
	UPDATE 1; 1 ms
	gerrit> \q
	Bye

	$ ssh -p 29418 review.example.com gerrit flush-caches --cache sshkeys --cache accounts
----

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
