WattleDB  /  PostgreSQL extensions

PostgreSQL extensions, installed rather than requested.

Every WattleDB database is PostgreSQL 17 running as its own cluster, with PostGIS, pgvector, pg_cron and pg_stat_statements already in place and the trusted contrib extensions one CREATE EXTENSION away. Nothing to file, nobody else affected when you switch one on.

Four extensions you do not have to ask for

Embeddings and similarity search

pgvector

Store embeddings from any model in a vector column, index them, and rank by cosine, L2 or inner-product distance. A vector database inside the Postgres you already have, on Australian-owned hosting, with the rest of your data in the same transaction.

CREATE TABLE docs ( id bigserial PRIMARY KEY, body text, embedding vector(1536) ); CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops); SELECT id, body FROM docs ORDER BY embedding <=> $1 LIMIT 10;
Geospatial

PostGIS 3.6

Geometry and geography types, spatial indexes and the core function library, for anything with an address, a boundary or a route. It lives in the wattledb_ext schema, which is on your search path, so ST_Distance resolves without qualification. Raster, topology and pgRouting are available on request.

ALTER TABLE places ADD COLUMN geom geography(Point, 4326); CREATE INDEX ON places USING gist (geom); SELECT name FROM places WHERE ST_DWithin(geom, ST_Point(151.21, -33.87, 4326)::geography, 2000);
Scheduled jobs

pg_cron

Run SQL on a schedule from inside the database: nightly clean-ups, rollups, expiring sessions. Jobs run as the role that created them, not as a superuser, and the job and run-history tables sit in the cron schema.

SELECT cron.schedule('expire-sessions', '15 * * * *', $$DELETE FROM sessions WHERE expires_at < now()$$); SELECT * FROM cron.job_run_details ORDER BY start_time DESC LIMIT 20; -- Schedules are read in this zone; check it before relying on a wall-clock hour: SHOW cron.timezone;
Query statistics

pg_stat_statements

Each query's call count, total and mean time, and rows, so you find the expensive query before a customer does. Also in wattledb_ext, readable by your app role and deliberately not reachable through the REST API.

SELECT calls, round(total_exec_time) AS ms, left(query, 60) AS query FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;

Before you create a single table, the catalogue and these extensions use about 16 MB of your plan's database allowance, the largest part being PostGIS's coordinate-reference table. That is true of every PostgreSQL platform that ships extensions ready to use, and the FAQ states it plainly.

The trusted contrib extensions, one statement away

PostgreSQL marks some contrib extensions as trusted, meaning the database owner can create them without superuser rights. Those are yours to enable: uuid-ossp, citext, pg_trgm, hstore, pgcrypto, ltree, unaccent, btree_gin and the other trusted ones. Untrusted contrib extensions (dblink, postgres_fdw, file_fdw and the like) are not available, because your role is not a superuser. Because every database is its own PostgreSQL cluster rather than a schema inside a shared one, enabling an extension changes nothing for anybody else.

CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE INDEX ON customers USING gin (name gin_trgm_ops); SELECT name FROM customers WHERE name ILIKE '%smith%';

Need something not listed here? Ask. We will tell you plainly whether it can be enabled and what it costs in catalogue space, rather than guessing.

The rest of the platform

  • Instant REST API. Once you enable the API for a database, every table in public becomes an endpoint through PostgREST, with Row-Level Security enforced on every request. Extension schemas stay off the API by design. How the REST API works.
  • Pooled and direct connections. A transaction-mode pooler for your app and serverless functions, and a direct connection for migrations, psql and anything that needs session state. When to use which.
  • Backups and point-in-time recovery. Continuous WAL archiving to a cross-state Melbourne archive, restore to a chosen second into a new database, drill dates published on the status page.
  • Roles you create. Read-only, read and write, owner or connect-only PostgreSQL logins, each with its own connection string, revocable one at a time. Roles and credentials in the docs.
  • Postgres technique guides. Indexing, reading EXPLAIN ANALYZE, JSONB, full-text search and zero-downtime migrations, written for plain PostgreSQL and usable anywhere.

Extensions, answered

Does WattleDB support pgvector?
Yes. pgvector is installed on every WattleDB database, so you can store embeddings in a vector column, index them with HNSW or IVFFlat, and run similarity search with the distance operators. No ticket is needed.
Does WattleDB support PostGIS?
Yes. PostGIS 3.6 is installed on every database in a wattledb_ext schema that is on your search path, so geometry and geography types and functions such as ST_Distance resolve without qualification. The raster, topology and pgRouting components are available on request.
Can I schedule jobs inside my database with pg_cron?
Yes. pg_cron is installed on every database. Schedule with cron.schedule(); jobs run as the role that created them, not as a superuser, and the job tables live in the cron schema.
Which PostgreSQL version does WattleDB run?
PostgreSQL 17. Every WattleDB database is its own PostgreSQL cluster rather than a schema in a shared one, so enabling an extension affects nobody else and your data is a standard pg_dump away.
Which other extensions can I use?
pg_stat_statements is installed for query statistics. The trusted contrib extensions, including uuid-ossp, citext, pg_trgm, hstore, pgcrypto and ltree, can be created with CREATE EXTENSION; untrusted ones such as dblink and postgres_fdw cannot, because your role is not a superuser. If you need something not listed, ask and we will tell you plainly whether it can be enabled.

PostgreSQL 17, extensions ready, Australian-owned

A free database in about two minutes, no card required. pgvector, PostGIS and pg_cron are already there when you connect.

Create a free database →