Docs / PostgreSQL, CockroachDB, YugabyteDB, TimescaleDB and the rest

← Databases

PostgreSQL, CockroachDB, YugabyteDB, TimescaleDB and the rest

One driver, built on tokio-postgres, speaks the PostgreSQL protocol. It opens PostgreSQL 12 and later, and the servers and services that speak the same protocol. Nothing is downloaded: the driver is part of the app.

Connect

Pick PostgreSQL in the grid of databases, or paste a URL: the form fills itself in.

You pasteRead as
postgres://user:pass@host:5432/db?sslmode=require (or postgresql://)the URL form; the default port is 5432
jdbc:postgresql://host/db?sslmode=requirea JDBC URL, as DBeaver and DataGrip keep them
host=db port=5432 dbname=shop user=app sslmode=requirea libpq connection string
Host=db;Database=shop;Username=app;Password=…an Npgsql connection string

URL parameters the app knows: sslmode, sslrootcert, sslcert, sslkey, application_name, connect_timeout and pgbouncer=true. Any other parameter is left out, and the form says which. A failover list of hosts (h1:5432,h2:5432) keeps the first host.

TLS follows libpq's sslmode:

ModeWhat happens
disableno TLS
prefer (the default)TLS if the server offers it, otherwise plain; the certificate is not checked
requireTLS, certificate not checked
verify-caTLS, the certificate chain is checked, the host name is not
verify-fullTLS, chain and host name are checked

The chain is checked against the file in sslrootcert if there is one, otherwise against the system's trusted certificates. A client certificate (sslcert and sslkey) is sent in every mode that uses TLS.

Signing in is by password, or by a token that a cloud's command-line tool makes at each connection: AWS IAM (aws), Google Cloud IAM (gcloud) and Microsoft Entra ID (az) are in the connection's Authentication choice. The tool must be installed and signed in on your machine. Or by Kerberos, below.

Kerberos (GSSAPI). Choose Kerberos ticket (GSSAPI) under Password from. The password field goes away: no password is asked, saved or sent. If the server asks for one, or lets you in without asking for Kerberos, the connection is refused and says so.

Poolers. Behind PgBouncer, Supavisor or Neon's pooler in transaction mode, choose Transaction mode in the form (or add pgbouncer=true to the URL). Statements then run unnamed, because the next transaction may be on another server session. The form suggests it for hosts ending in .pooler.supabase.com and for Neon hosts with -pooler in the name. In that mode the PL/pgSQL debugger is off, and agents' read-only sessions rely on the statement check alone.

The other servers have tiles of their own, which only set defaults:

TileDefaults it sets
CockroachDBport 26257
YugabyteDBport 5433, user and database yugabyte
TimescaleDBnone
Supabaseuser and database postgres, TLS require
Neon, AlloyDBTLS require

Privileges

Browsing needs only what the server shows the login. The administration tabs read these:

What works

CockroachDB and YugabyteDB open with the same driver, but the app finds out which server it is, and the server tools that rely on PostgreSQL's own views are off: no sessions, locks, dashboard, statements, tables and indexes, parameters, users or maintenance tabs, and no debugger. CockroachDB has its own plan format (Explain and Explain analyze work) and imports go as INSERT statements instead of COPY. A CockroachDB table without a key is edited by its hidden rowid. TimescaleDB (tested), Supabase, Neon and AlloyDB (not tested against the services) are PostgreSQL to the app, with everything above; what a hosted service restricts for your role is its own rule.

Agents

Read-only agents and read-only connections open the session with default_transaction_read_only (PostgreSQL, CockroachDB and YugabyteDB), so the server itself refuses writes; behind a transaction-mode pooler only the statement check does. server_activity and top_queries work on PostgreSQL proper, not on CockroachDB or YugabyteDB. See Agents and the CLI.

Known limits

Tested on

The conformance suite runs on PostgreSQL 12, 14, 16 and 17, TimescaleDB 2.30 on PostgreSQL 17, CockroachDB 26.2 and YugabyteDB 2025.2, plus PgBouncer in transaction mode, a client certificate over mutual TLS, and the debugger on a server with pldebugger. Supabase, Neon and AlloyDB are not tested: they are the PostgreSQL driver with defaults.

Kerberos is tested with a real ticket from a real KDC (MIT Kerberos, in the kerberos profile of docker/compose.yml) on PostgreSQL 17, from a Linux client with GSSAPI: a ticket from kinit, a keytab, TLS, psql, no ticket, an expired ticket and a wrong service name. The login through Windows' SSPI has not been tried with a real ticket: a Windows machine outside a domain cannot reach the test KDC without changing system settings (ksetup). On Windows only what happens without a ticket is tested. A server's sspi line (PostgreSQL on Windows) has not been tried either.

See also: Connecting, Troubleshooting.