Error Message Catalog

pg_ripple uses structured error codes in the range PT001–PT799, organized by subsystem. Error messages follow PostgreSQL conventions: lowercase first word, no trailing period.

Finding the error code

Error codes appear in the DETAIL field of PostgreSQL error messages. Use \errverbose in psql to see the full error context including the code.


PT001–PT099: Dictionary

Errors from the IRI/literal/blank-node → integer encoding subsystem.

CodeMessageCauseFix
PT001dictionary encode failed: hash collision detectedTwo distinct terms produced the same XXH3-128 hash (extremely rare)Report to maintainers with the two colliding terms
PT002dictionary decode failed: id not foundThe integer ID does not exist in _pg_ripple.dictionaryData may be corrupt; run pg_ripple.vacuum_dictionary() and check VP tables
PT003invalid term kind: expected 0 (IRI), 1 (literal), 2 (blank node)Wrong kind integer passed to encode_term()Use 0 for IRIs, 1 for literals, 2 for blank nodes
PT004quoted triple components not foundA quoted-triple ID references qt_s/qt_p/qt_o values that are missing from the dictionaryRe-load the RDF-star data; may indicate a partial load failure
PT005inline-encoded literal decode failedInternal decoding error for small inline-encoded literalsReport to maintainers with the literal value
PT006dictionary batch insert failedThe ON CONFLICT DO NOTHING … RETURNING batch insert encountered an unexpected errorCheck PostgreSQL logs for disk space or permission issues
PT007dictionary lookup: NULL termA NULL value was passed where an IRI, literal, or blank node was expectedEnsure all arguments are non-NULL
PT008malformed IRI: <detail>The IRI string does not conform to RFC 3987Fix the IRI syntax; IRIs must be wrapped in angle brackets <…>
PT009malformed literal: <detail>The literal string cannot be parsedUse N-Triples syntax: "value", "value"@lang, or "value"^^<datatype>
PT010malformed blank node: <detail>The blank node label is invalidBlank nodes must start with _: followed by a valid label
PT011dictionary cache full, eviction failedThe LRU cache could not evict entriesIncrease pg_ripple.dictionary_cache_size
PT012prewarm_dictionary_hot: table not foundThe dictionary table does not existRun CREATE EXTENSION pg_ripple first

PT100–PT199: Storage

Errors from the VP table storage layer, HTAP partitions, and rare-predicate management.

CodeMessageCauseFix
PT100insert_triple: predicate IRI requiredThe predicate argument is NULL or emptyProvide a valid predicate IRI
PT101VP table creation failedDDL error when creating a new VP tableCheck pg_log for the underlying PostgreSQL error
PT102htap_migrate_predicate: predicate not foundThe predicate ID does not exist in _pg_ripple.predicatesVerify the predicate IRI and that triples exist for it
PT103merge: lock_timeout exceeded during main table swapAnother transaction held a lock on the VP table for too longRetry; consider increasing lock_timeout for maintenance windows
PT104rare-predicate promotion failedError promoting a predicate from vp_rare to a dedicated VP tableCheck disk space and user permissions
PT105delete_triple: predicate not found in catalogThe triple's predicate has no VP tableThe predicate may never have been used, or was already compacted
PT106VP table not found: <table_name>The VP table referenced in _pg_ripple.predicates does not exist on diskRun pg_ripple.compact() to reconcile the catalog
PT107delta table insert failedError writing to the HTAP delta partitionCheck PostgreSQL logs for tablespace or permission issues
PT108tombstone insert failedError recording a deletion in the tombstones tableCheck PostgreSQL logs
PT109merge worker: unexpected stateThe background merge worker encountered an inconsistent stateRestart PostgreSQL; check pg_log for crash details
PT110statement_id_seq: sequence exhaustedThe global statement ID sequence has reached its maximumThis is unlikely with BIGINT; contact maintainers
PT111vp_rare: row limit exceededThe rare-predicate table has too many rows for a single predicateManually promote with promote_rare_predicates() or lower pg_ripple.vp_promotion_threshold
PT112deduplicate: advisory lock not acquiredAnother deduplication operation is already runningWait and retry
PT113create_graph: invalid graph IRIThe graph IRI is malformedGraph IRIs must be valid absolute IRIs in angle brackets
PT114drop_graph: graph not foundThe named graph does not existUse list_graphs() to check available graphs

PT200–PT299: SPARQL

Errors from the SPARQL parser, algebra optimizer, and SQL code generator.

CodeMessageCauseFix
PT200SPARQL parse error: <detail>The SPARQL query has a syntax errorFix the syntax; use sparql_explain() to validate without executing
PT201unsupported SPARQL algebra node: <type>The query uses a feature not yet implementedCheck the compliance matrix for supported features
PT202SPARQL SELECT: no projected variablesThe SELECT clause has no variablesAdd at least one ?variable to the SELECT clause
PT203property path depth exceeded max_path_depthA recursive property path exceeded the configured depth limitIncrease pg_ripple.max_path_depth or simplify the path expression
PT204SPARQL federated SERVICE: endpoint not reachableThe remote SPARQL endpoint did not respondCheck the endpoint URL and network connectivity
PT205SPARQL VALUES clause: column count mismatchThe number of values in a VALUES row does not match the variable listEnsure each VALUES row has the same number of columns as variables
PT206SPARQL type error: <detail>A type mismatch in a FILTER expressionCheck operand types; e.g., comparing a string to an integer
PT207SPARQL CONSTRUCT: template variable not in WHEREA variable in the CONSTRUCT template is not bound in the WHERE clauseBind all template variables in the WHERE clause
PT208SPARQL DESCRIBE: no resource specifiedDESCRIBE requires at least one resource or variableAdd a resource IRI or variable to the DESCRIBE clause
PT209SPARQL aggregate: variable not groupedA non-aggregated variable is used outside GROUP BYAdd the variable to GROUP BY or wrap it in an aggregate function
PT210SPARQL HAVING: refers to non-aggregateThe HAVING clause references a variable that is not an aggregate resultUse an aggregate function in HAVING
PT211generated SQL execution failed: <detail>The SQL generated from SPARQL failed to executeCheck pg_log for the underlying error; report if reproducible
PT212plan cache: entry evicted during executionA cached plan was evicted while the query was still runningIncrease pg_ripple.plan_cache_size
PT213SPARQL SERVICE: response parse errorThe federated endpoint returned malformed resultsCheck the remote endpoint's response format
PT214SPARQL SERVICE: timeout after <N> msThe federated request exceeded pg_ripple.federation_timeoutIncrease the timeout or simplify the SERVICE query
PT215SPARQL UPDATE parse error: <detail>The SPARQL Update statement has a syntax errorFix the syntax
PT216SPARQL UPDATE: LOAD failed for <url>The LOAD operation could not retrieve the remote resourceCheck URL, network, and pg_ripple.federation_timeout
PT217SPARQL UPDATE: unsupported content type <type>The LOAD target serves an unrecognized RDF formatThe URL must serve Turtle, N-Triples, N-Quads, TriG, or RDF/XML
PT218SPARQL UPDATE: CREATE GRAPH already existsThe graph already existsUse CREATE SILENT GRAPH to suppress this error
PT219SPARQL UPDATE: DROP GRAPH not foundThe graph does not existUse DROP SILENT GRAPH to suppress this error

PT300–PT399: SHACL

Errors from the SHACL shapes loader, validator, and async monitoring pipeline.

CodeMessageCauseFix
PT300SHACL parse error: <detail>The Turtle-encoded SHACL shapes have a syntax errorFix the Turtle syntax in the shapes definition
PT301SHACL sync validation failed: <shape><message>A triple violates a SHACL constraint during synchronous validationFix the data to conform to the shape, or modify the shape
PT302SHACL shape not found: <iri>The referenced shape has not been loadedLoad the shape with load_shacl() first
PT303SHACL DAG monitor: pg_trickle not installedDAG-aware monitors require the pg_trickle extensionInstall pg_trickle or use enable_shacl_monitors() for trigger-based validation
PT304SHACL: unsupported constraint component <type>The shape uses a SHACL-AF or SHACL-JS constraintOnly SHACL Core constraints are supported
PT305SHACL: sh:path too complexThe property path in the shape exceeds supported complexitySimplify the sh:path expression
PT306SHACL: validation queue overflowThe async validation queue has exceeded its capacityProcess the queue with process_validation_queue() or increase the queue size
PT307SHACL: dead letter queue threshold reachedToo many validation failures have accumulatedInspect with dead_letter_queue() and address the failures
PT308SHACL: sh:targetClass not foundThe target class IRI is not present in the dataLoad data with the target class, or fix the class IRI
PT309SHACL: circular shape referenceA shape references itself through sh:node or sh:qualifiedValueShapeBreak the circular reference
PT310SHACL: drop_shape: shape has active monitorsCannot drop a shape that has active monitorsDisable monitors first with disable_shacl_dag_monitors()

PT400–PT499: Datalog — Rules

Errors from the Datalog rule parser, stratifier, and rule management.

CodeMessageCauseFix
PT400rule parse error: <detail>The Datalog rule has a syntax errorFix the rule syntax; see Reasoning and Inference for syntax reference
PT401rule stratification failed: unstratifiable programThe rule set contains a cycle through negation that prevents stratificationRewrite rules to break the negation cycle, or use infer_wfs() for well-founded semantics
PT402rule set not found: <name>The referenced rule set has not been loadedLoad it with load_rules() or load_rules_builtin()
PT403inference: maximum iteration depth exceededSemi-naive evaluation did not converge within the iteration limitSimplify the rule set or increase statement_timeout
PT404constraint violation detected: <rule>A constraint rule (:- body.) firedCheck the data against the constraint body
PT405rule set already exists: <name>A rule set with this name is already loadedDrop it first with drop_rules(), or choose a different name
PT406rule: unsafe variable <var>A variable appears in the head but not in a positive body literalEnsure every head variable also appears in a positive body literal
PT407rule: built-in predicate not recognized: <name>An unknown built-in predicate was usedCheck available built-ins: =, !=, <, >, <=, >=, +, -, *, /
PT408rule: aggregation variable not in group-byAn aggregated variable is used outside the grouping contextAdd the variable to the group-by list

PT500–PT599: Datalog — Inference Engine

Errors from the materialization engine, magic sets optimizer, WFS evaluator, and tabling.

CodeMessageCauseFix
PT500infer: no enabled rule setsinfer() was called with no rule sets enabledEnable at least one rule set with enable_rule_set()
PT501infer: SPI execution failed during iteration <N>The SQL generated for a rule body failedCheck pg_log for the underlying error
PT502infer_demand: magic set rewriting failedThe demand transformation could not be appliedSimplify the goal pattern or rule set
PT503infer_demand: goal pattern too broadThe goal has no bound arguments, defeating the purpose of demand-driven evaluationBind at least one argument in the goal
PT504infer_wfs: unfounded set computation exceeded limitThe well-founded semantics fixpoint did not convergeSimplify the rule set or check for unusual negation patterns
PT505infer_wfs: three-valued model contains undefined atomsSome atoms could not be classified as true or falseThis is expected in WFS; query the undefined result set to see which atoms
PT506tabling: memo store overflowThe tabling memo store exceeded its size limitIncrease pg_ripple.tabling_memo_size
PT507infer_agg: aggregation cycle detectedAn aggregation rule depends on its own aggregate resultRewrite to break the cycle
PT508infer_goal: predicate not in any rule setThe goal predicate is not defined by any loaded ruleLoad a rule set that defines the predicate
PT509owl:sameAs canonicalization: cycle limit exceededThe owl:sameAs equivalence class merging exceeded the iteration limitCheck for very large owl:sameAs clusters
PT520infer_wfs: iteration cap reached (<N> iterations)The WFS alternating fixpoint did not converge within pg_ripple.wfs_max_iterationsEmitted as WARNING; partial result is returned with "stratifiable": false; increase the cap or simplify the rule set
PT540lattice: fixpoint did not converge after <N> iterationsThe lattice fixpoint did not stabilise within pg_ripple.lattice_max_iterationsIncrease pg_ripple.lattice_max_iterations or verify that the join function is monotone
PT541lattice: join_fn <name> could not be resolvedThe user-supplied join function name could not be resolved via regprocedureCheck the function name, schema, and argument types; use a fully-qualified name
PT542federation: result decoder received unparseable XML/JSONThe SPARQL results response from a remote SERVICE endpoint could not be parsedCheck the endpoint's response format; ensure it returns application/sparql-results+xml or +json

PT600–PT699: Export / HTTP

Errors from export serializers, GraphRAG export, and the HTTP companion service.

CodeMessageCauseFix
PT600export: serialization failed for triple <sid>A triple could not be serialized to the target formatCheck that the triple's dictionary entries are intact
PT601export: unsupported format <format>An unrecognized export format was requestedUse ntriples, nquads, turtle, or jsonld
PT602export_turtle_stream: batch_size must be > 0Invalid batch sizeUse a positive integer
PT603export_jsonld: framing failedThe JSON-LD framing algorithm encountered an errorCheck the frame structure; see JSON-LD Framing
PT604export_graphrag_entities: no entities foundNo entities match the GraphRAG export criteriaLoad data or adjust the GraphRAG ontology
PT605jsonld_frame_to_sparql: invalid frameThe JSON-LD frame could not be converted to SPARQLCheck the frame JSON structure
PT606export: streaming interruptedThe streaming export was cancelled or the client disconnectedRetry the export

PT700–PT799: Configuration / Startup

Errors from extension initialization, GUC validation, and background workers.

CodeMessageCauseFix
PT700_PG_init: cache_budget exceeds shared_memory_sizepg_ripple.cache_budget is larger than pg_ripple.shared_memory_sizeReduce cache_budget or increase shared_memory_size
PT701_PG_init: shmem initialization failedShared memory allocation failedIncrease system shared memory (kern.sysv.shmmax on macOS, kernel.shmmax on Linux)
PT702worker_database not set; merge worker defaulting to 'postgres'The pg_ripple.worker_database GUC is not setSet it to the correct database name in postgresql.conf
PT703merge worker watchdog: worker has been silent for <N> secondsThe background merge worker may have crashedCheck pg_log for crash details; restart PostgreSQL
PT704extension version mismatch: binary <v1>, control <v2>The compiled extension version does not match pg_ripple.controlRebuild and reinstall the extension
PT705GUC validation: <param> out of rangeA GUC parameter was set to an invalid valueCheck the GUC Reference for valid ranges
PT706shared_preload_libraries: pg_ripple not loadedpg_ripple is not in shared_preload_librariesAdd pg_ripple to shared_preload_libraries in postgresql.conf and restart
PT707pg_trickle not installedA feature requiring pg_trickle was calledInstall pg_trickle or use the non-trickle alternative
PT708pgvector not installedA vector/embedding function was called without pgvectorInstall pgvector or disable with pg_ripple.pgvector_enabled = off
PT709enable_graph_rls: RLS policy creation failedRow-level security policy could not be createdCheck superuser privileges
PT710grant_graph: invalid permissionPermission must be 'read', 'write', or 'admin'Use one of the three valid permission strings

Reporting bugs

If you encounter an error code not listed here, or a message that says "contact maintainers", please open a GitHub issue with the full error output, your pg_ripple version (SELECT pg_ripple.canary()), and a minimal reproducer.