This page documents the hard limits, default quotas, and tunable caps in pg_ripple. All GUC parameters listed here can be adjusted; see the GUC Reference for full details.
Limit Default GUC Error code
Max SPARQL result rows unlimited pg_ripple.sparql_max_rowsPT640
SPARQL overflow action truncatepg_ripple.sparql_overflow_action—
Max algebra tree depth 256 pg_ripple.sparql_max_algebra_depthPT440
Max triple patterns per query 4096 pg_ripple.sparql_max_triple_patternsPT440
Max DESCRIBE CBD depth 16 pg_ripple.describe_max_depth—
Fuzzy match input length 4096 chars pg_ripple.fuzzy_max_input_lengthPT0308
All-nodes predicate expansion cap 500 predicates pg_ripple.all_nodes_predicate_limit—
Limit Default GUC Error code
Export function max rows (Turtle/N-Triples/JSON-LD) unlimited pg_ripple.export_max_rowsPT642
Arrow Flight batch size 1000 rows/batch pg_ripple.arrow_batch_size—
Limit Default GUC Error code
Datalog max depth unlimited pg_ripple.datalog_max_depth—
Datalog max derived facts unlimited pg_ripple.datalog_max_derived—
Well-founded semantics max rounds 100 pg_ripple.wfs_max_iterationsPT520
SHACL rule max iterations 100 pg_ripple.shacl_rule_max_iterationsPT301
Lattice inference max iterations 1000 pg_ripple.lattice_max_iterationsPT540
Probabilistic Datalog max iterations 100 pg_ripple.prob_datalog_max_iterations—
SHACL score log retention 30 days pg_ripple.shacl_score_log_retention_days—
Limit Default GUC Error code
Per-SERVICE timeout 30 s pg_ripple.federation_timeoutPT214
Connect timeout 10 s pg_ripple.federation_connect_timeout_secsPT214
Max rows per SERVICE call 10,000 pg_ripple.federation_max_results—
Max response body per endpoint 100 MiB pg_ripple.federation_max_response_bytesPT215
Partial recovery max bytes 64 KiB pg_ripple.federation_partial_recovery_max_bytes—
Circuit breaker threshold 5 failures pg_ripple.federation_circuit_breaker_thresholdPT217
Parallel SERVICE workers 4 pg_ripple.federation_parallel_max—
Limit Default GUC Error code
Max PageRank iterations 100 pg_ripple.pagerank_max_iterations—
Max seed IRIs per call 1024 pg_ripple.pagerank_max_seedsPT0411
Convergence check norm L1 pg_ripple.pagerank_convergence_norm—
Limit Default GUC Notes
VP promotion threshold 1,000 triples pg_ripple.vp_promotion_thresholdBelow threshold: stored in vp_rare
Merge batch size 1,000,000 rows pg_ripple.merge_batch_sizePer-merge INSERT…SELECT
Merge fence lock timeout 5,000 ms pg_ripple.merge_lock_timeout_ms—
CDC watermark batch size 100 events pg_ripple.cdc_watermark_batch_size—
VP promotion batch size 10,000 rows pg_ripple.vp_promotion_batch_size—
Bidi relay max in-flight 1,000 ops pg_ripple.bidi_relay_max_inflightDrop-oldest policy
Dictionary vacuum threshold 10,000 terms pg_ripple.dict_vacuum_thresholdPost-encode auto-VACUUM
Limit Default GUC Notes
Dictionary LRU cache size 65,536 entries pg_ripple.dictionary_cache_sizeXXH3-128 hash map
Shared memory budget 64 MiB pg_ripple.cache_budget_mbpostmaster-scoped
Limit Default Config Notes
Max request body size 10 MiB PG_RIPPLE_HTTP_MAX_BODY_BYTESApplies to SPARQL UPDATE body
Rate limit unlimited PG_RIPPLE_HTTP_RATE_LIMITPer source IP, req/s
Arrow Flight ticket expiry 3,600 s pg_ripple.arrow_flight_expiry_secsSigned HMAC tickets
Connection pool size 16 PG_RIPPLE_HTTP_POOL_SIZEPostgres connections
Limit Default GUC Notes
Event audit retention 90 days pg_ripple.audit_retention_days_pg_ripple.event_audit
SHACL score log retention 30 days pg_ripple.shacl_score_log_retention_days_pg_ripple.shacl_score_log
CDC slot idle timeout 3,600 s pg_ripple.cdc_slot_idle_timeout_secondsOrphan slot cleanup
VACUUM dict batch size 200 entries pg_ripple.vacuum_dict_batch_sizevacuum_dictionary()
These limits are baked into the implementation:
Constraint Value Notes
Dictionary hash space 2^64 (XXH3-128) Collision probability negligible in practice
Maximum SID (statement ID) 2^63 − 1 (i64) PostgreSQL sequence maximum
Maximum named graph ID 2^63 − 1 (i64) Same sequence namespace
Maximum predicate ID 2^63 − 1 (i64) Same sequence namespace
SPARQL 1.1 spec compliance Full SELECT, CONSTRUCT, DESCRIBE, ASK, UPDATE, LOAD, CLEAR, DROP, ADD, MOVE, COPY
PostgreSQL target 18.x only pgrx 0.18, no older PG support
For a 100 GB RDF dataset on a 32-core / 128 GB RAM server:
# postgresql.conf overrides
pg_ripple.dictionary_cache_size = 1000000
pg_ripple.cache_budget_mb = 512
pg_ripple.sparql_max_rows = 100000
pg_ripple.export_max_rows = 500000
pg_ripple.merge_threshold = 50000
pg_ripple.merge_workers = 4
pg_ripple.datalog_parallel_workers = 8
pg_ripple.federation_timeout = 60
pg_ripple.federation_parallel_max = 8
pg_ripple.pagerank_max_iterations = 200
See Performance Tuning for a full tuning guide.