Installation
KoldStore must load at postmaster start. Without
shared_preload_libraries = 'koldstore', planner hooks never register and
managed SELECTs can silently miss cold rows after flush.
Fastest path: Docker
Published images preload the extension and create it on first init:
Connect:
| Detail | Value |
|---|---|
| Default database | koldstoredb |
| PostgreSQL major | 16 |
| Tags | latest, <version>-pg16 (for example 0.1.5-beta.0-pg16) |
| Architectures | amd64, arm64 |
Confirm:
pg_cron may be packaged in the image but is not preloaded. Enable it
yourself if you want cron-based flush scheduling.
Shared preload (required on every install)
Install order:
- Install extension package files
- Set
shared_preload_libraries = 'koldstore'(merge with any existing list) - Restart PostgreSQL (
reloadis not enough) CREATE EXTENSION koldstore
Ubuntu / Debian example:
Rules:
session_preload_librariesis not sufficient- Removing preload after
manage_tableis unsupported - Check with
SELECT koldstore.preload_status();
Logical WAL (required for managed tables)
Committed-WAL capture needs:
Restart after changing wal_level. Do not create the publication or logical
slot yourself: CREATE EXTENSION ensures the empty publication
koldstore_async_mirror, and the first manage_table creates the database’s
deterministic slot. Provisioning is idempotent.
Recommended production GUC baseline
Prefer ALTER SYSTEM / ALTER DATABASE for settings the background worker
reads (session SET does not always reach the worker):
| Setting | Baseline |
|---|---|
shared_preload_libraries | include koldstore |
wal_level | logical |
koldstore.async_mirror_max_retained_bytes | 1073741824 (1 GiB health alert) |
koldstore.flush_check_interval_seconds | 30 |
koldstore.async_apply_poll_interval_ms | 100 |
From source (developers)
Build and install with pgrx against a local PostgreSQL (typical loop for PG 16):
Then set preload, restart, and CREATE EXTENSION. See the repository
quickstart
and Docker folder for
compose + MinIO layouts.
Upgrades (beta)
There are no packaged ALTER EXTENSION … UPDATE edges yet while the product
is in development. Local installs reinstall or resync when the bootstrap SQL
changes. Treat in-place upgrade and pg_upgrade as future ops work — see
Status & Limits.
Next step
Getting Started — register storage, manage
a table, flush, and read with changes_since.