The error appears when ParadeDB reaches its configured storage or memory limit; raising the quota or freeing space removes the blockage.
ParadeDB enforces per-database or per-role quotas to prevent runaway storage or memory usage. When a bulk INSERT, UPDATE, or index build pushes total size beyond the limit, PostgreSQL raises the error and aborts the statement.
Run the helper view to inspect limits and usage:
SELECT *
FROM parade.quota_usage
ORDER BY scope, current_size DESC;
The view lists scope (database, role, or table), configured quota, current_size, and percent_used.
Use the administrative function parade.set_quota()
. Changes take effect immediately and are transaction-safe.
SELECT parade.set_quota(
scope => 'database', -- database | role | table
identifier => current_database(),
size => '40 GB' -- any PostgreSQL size literal
);
Yes. Delete unused data or drop obsolete vector indexes, then run VACUUM to reclaim space. ParadeDB updates its internal meter automatically.
DELETE FROM products
WHERE discontinued;
VACUUM (VERBOSE);
Base the quota on projected data growth plus a 20 % buffer. Monitor parade.quota_usage
weekly, and automate alerts when percent_used > 80 %.
Temporarily bump the quota, run the import, then reduce it again, or split the job into smaller batches that keep below 80 % of the limit.
-- Step 1: raise database quota to 60 GB
SELECT parade.set_quota('database', current_database(), '60 GB');
-- Step 2: bulk load new orders
INSERT INTO orders (customer_id, order_date, total_amount)
SELECT id, NOW(), random()*200
FROM generate_series(1, 500000) id;
-- Step 3: restore original quota
SELECT parade.set_quota('database', current_database(), '40 GB');
This pattern guarantees the batch succeeds without long-term resource inflation.
No. parade.set_quota()
is a lightweight catalog update that applies instantly.
Yes. Pass size => NULL
. ParadeDB removes the cap but continues tracking usage.
Not currently. ParadeDB measures logical data size, independent of physical tablespaces.