Limitations & errors
Most limits are PostgreSQL 19's, not PGQViewer's — SQL/PGQ is brand new and still growing. PGQViewer's job is to be honest about all of them.
Inherited from PG19 SQL/PGQ
- No variable-length paths —
[*],[*1..3], and+quantifiers all error. Use a recursive CTE in SQL mode; a recursive-CTE helper is on the roadmap. - One path pattern per GRAPH_TABLE — no comma-separated paths inside a single
MATCH. Join multipleGRAPH_TABLEcalls in SQL mode instead. - No ELEMENT_ID() — PGQViewer synthesizes stable element ids from the element and its key values instead.
- No
a.*in COLUMNS — graph mode enumerates every declared property automatically.
PGQViewer's one requirement
Key columns must be exposed as properties — easiest via PROPERTIES ALL COLUMNS, or an explicit list that includes the key columns, e.g. LABEL knows PROPERTIES (src, dst, since). Without them, row identity can't be reconstructed; PGQViewer explains exactly what's missing when you select the graph. It also warns about two definition shapes PG19 legally accepts but that break drawing fidelity: non-unique KEY columns, and edge REFERENCES that don't match the vertex KEY — see Connecting.
The result cap
The server enforces a post-deduplication cap (10,000 unique vertices and edges by default) and ends the stream with an explicit truncated flag. Truncated results and undrawable edges are labelled, never hidden— the canvas tells you when you're looking at a partial picture.
Common errors and their fixes
| PostgreSQL says | What to do |
|---|---|
element pattern quantifier is not supported | PG19 has no variable-length paths — no [*], [*1..3], or +. Use a recursive CTE in SQL mode for transitive traversal. |
multiple path patterns in one GRAPH_TABLE clause not supported | Split into separate GRAPH_TABLE calls and JOIN them in SQL mode. |
"*" is not supported here | COLUMNS needs explicit names — in graph mode PGQViewer enumerates every declared property for you, so you never write COLUMNS by hand. |
property X does not exist | Recreate the graph with PROPERTIES ALL COLUMNS, or reference only declared properties. |
label X does not exist in property graph Y | Typo, or the pattern targets the wrong graph — check the sidebar for the labels this graph declares. |
source key columns […] are not declared as properties | Expose the foreign-key columns as properties — PROPERTIES ALL COLUMNS is the easiest way. |
property graphs cannot be unlogged | Drop UNLOGGED from the underlying table. |
Hit an error that isn't hinted in the UI? Copy the message into a GitHub issue — hint patterns are easy to add.
Security caveats (alpha)
- The endpoint is unauthenticated — publish it on loopback or a trusted network only. An authentication layer for shared deployments is on the roadmap.
- Saved connection passwords are stored in plaintext in the local SQLite app store. Encrypted credential storage is on the roadmap.
- TLS to PostgreSQL is supported (
require/verify-ca/verify-full), and graph mode only ever issuesSELECTs.
Older PostgreSQL versions
Property graphs first ship in PostgreSQL 19, so there is nothing for PGQViewer to view on 18 or older — the pg_propgraph_* catalogs don't exist there.