# Known Issues
pgGraph is currently alpha software. Do not use it for production workloads
until the next correctness, SQL contract, persistence, and operational
hardening update lands.
pgGraph is built around a simple launch standard: the most critical correctness,
durability, safety, and operational paths should be solid first. There is always
another way to optimize a graph engine, especially inside PostgreSQL, so we are
launching with the critical paths working and then continuously improving in
the open.
This page documents known alpha limitations, next-update hardening work, and
lower-priority follow-up items. The list is ranked by expected user impact, not
by implementation difficulty.
This page remains the authoritative issue register. Higher-priority hardening
work from the previous completion plan is now recorded in the completed-items
table below.
Low-level PostgreSQL extension work involves real tradeoffs. Some optimizations
make a query faster by keeping more data in memory, while others reduce memory
pressure by doing more work per request. pgGraph has to weigh those choices
carefully because it runs inside PostgreSQL backend processes rather than a
separate service with its own resource envelope.
## Next Update Scope
The next update is focused on issues that are either hard to change after users
depend on SQL behavior, or important enough to fix before recommending
production use.
### Data Correctness and Corruption
No currently tracked next-update items remain in this category after `v0.1.2`.
The previously listed edge endpoint validation and hydration numeric comparison
issues were completed: invalid edge endpoints now fail as structural errors, and
large JSON integers preserve exactness without implicit string/number matches.
### SQL Contract and Query Semantics
No currently tracked next-update items remain in this category after the filter
model and legacy numeric filter work moved public traversal filtering onto the
structured typed-filter path only.
### SQL Safety and Schema Plumbing
No currently tracked next-update items remain in this category after dynamic
table SQL and discovery SQL parameterization work.
### Persistence and File Format
No currently tracked next-update items remain in this category after artifact
writes moved to a streaming writer for fixed graph sections.
### Sync, Jobs, and Operator Semantics
No currently tracked next-update items remain in this category after scheduler
ownership and background-job failure handling were completed.
### Internal Construction and Performance
No currently tracked next-update items remain in this category after traversal
result metadata became adaptive for sparse visit budgets while retaining dense
metadata for high-coverage result conversion.
## P0: Operational Visibility and Resource Predictability
These are the highest-priority public follow-ups because they affect operators
running larger graphs or higher sync volume.
No currently tracked P0 items remain after persistence status phases and
interrupt checks were added while preserving synchronous durability.
## P1: Query Performance Follow-Ups
These items are expected to improve latency or memory pressure, but they are
not changes to the public SQL contract.
No currently tracked P1 query-performance rows remain after source-search
rechecks, aggregation hydration lookup ownership, and traversal result metadata
were completed.
## P2: SQL Ergonomics and Documented Semantics
These items clarify behavior or broaden the API. They are planned, but should
not block use of the current documented SQL surface.
No currently tracked P2 rows remain after structured traversal filters gained
text substring and prefix predicates alongside equality, membership, range, and
null checks.
## P3: Internals and Maintainability
These are mostly contributor-facing improvements. They help long-term velocity,
but they do not change core user behavior.
| Area | Current limitation | Planned direction |
|---|---|---|
| pg test layout | Some PostgreSQL integration test files are still included textually from `lib.rs` because pgrx `#[pg_schema]` currently requires an inline `mod {}` body for generated SQL tests. | Revisit when the pgrx macro supports out-of-line modules or when the pg test harness is reorganized around macro-compatible test modules. |
## Lower-Priority Optimizations
These are intentionally deferred until measurement shows they matter:
- Avoiding small string allocations in config parsing and UUID parsing.
- Replacing bitmap serialized-size estimates with native roaring helpers if the
pinned crate exposes them.
- Reducing low-level clone counts in builder, traversal, weighted path, and
aggregation paths.
- Combining duplicate path reconstruction passes after the larger traversal
allocation work is complete.
- Cleaning up long internal function signatures when the surrounding traversal
parameters stabilize.
- Replacing manual pointer alignment checks with newer standard-library helpers
once the supported Rust version makes that clean.
- Cleaning up padding-bit handling in `active_count()`.
- Moving from custom parse helpers to `FromStr` for SQL-facing enums.
- Introducing production newtypes for node indices and edge type IDs after
benchmarking the hot paths.