Limits & quotas
This page covers two kinds of limits: resource quotas on the service, and SQL compatibility limits inherited from the PizzaSQL engine.
Beta note. database.pizza is under active development. The quota defaults below are the current values and may change as plans evolve; treat them as indicative rather than contractual.
Resource quotas
Section titled “Resource quotas”Quotas apply per organization and cover four dimensions:
| Dimension | Current default | What counts |
|---|---|---|
| Databases | 3 | Active databases in the organization |
| Storage | 100 MB | Allocated on-disk space for the organization |
| Queries | 500,000 / week | Queries across all surfaces |
| Connections | 100 concurrent | Open PostgreSQL connections |
Queries and bytes-read are counted per organization per week; concurrent connections are measured at any instant. Usage is visible in the dashboard’s Quota view.
When you hit a quota:
- Creating another database beyond the database limit is rejected.
- Exceeding storage prevents further writes that would grow the data.
- The query and connection quotas cap sustained load until the window or connections free up.
If you need more, the limits are configurable per organization — reach out through the dashboard rather than working around them.
API and endpoint limits
Section titled “API and endpoint limits”- REST list results default to
100rows and cap at1000per request (limitparameter). - Import uploads are size-limited: SQL and CSV multipart uploads cap at 32 MB; SQLite imports cap at 128 MB.
- One statement per
/queryrequest. Use/executeto batch several, or the PostgreSQL protocol for scripts and transactions. - No transactions over HTTP.
BEGIN/COMMITand friends return501; use the PostgreSQL protocol instead.
SQL compatibility limits
Section titled “SQL compatibility limits”PizzaSQL is SQLite-compatible, not PostgreSQL. The most common surprises when coming from Postgres:
SERIALand sequences don’t exist — useINTEGER PRIMARY KEY. Values are assigned automatically when omitted.VARCHAR(n)is accepted but not length-enforced — useTEXT.- No schemas, roles,
ARRAY,JSONB, orENUMtypes. - No
CREATE DATABASE/DROP DATABASEfrom a client — databases are managed in the dashboard (and require the platform’screate_databasescope, not a client key). - Type affinity is SQLite-style, so column types are hints more than strict constraints.
The complete, authoritative list is on the Compatibility page — read it before generating production SQL.
What isn’t imported
Section titled “What isn’t imported”Imports of existing SQLite databases skip several constructs: views, triggers, pragmas, expression indexes, and FOREIGN KEY / CHECK constraints. See Import & export.
TLS and connectivity
Section titled “TLS and connectivity”The PostgreSQL proxy currently declines SSL, so all wire-protocol connections use sslmode=disable. The HTTP surface is HTTPS-only. Plan around this for sensitive data — see the security notes in API keys & permissions.
Related
Section titled “Related”- Errors & troubleshooting — what a quota or compatibility failure looks like.
- Compatibility — the SQL dialect boundaries.
- Indexes — keep queries fast within your quota.