Hi all,

I've been writing a hands-on PostgreSQL book [1] and put together a chapter on the new SQL/PGQ support (CREATE PROPERTY GRAPH / GRAPH_TABLE) in PostgreSQL 19. CREATE PROPERTY GRAPH and fixed-depth GRAPH_TABLE pattern matching both work well and are a genuine readability win over the equivalent self-joins. One thing stood out enough that I wanted to ask rather than just assume it's unfinished: quantified (variable-length) path patterns don't appear to be implemented at all.

Setup: a simple self-referencing property graph over an employee/manager table.

    CREATE PROPERTY GRAPH city_org_graph
        VERTEX TABLES ( city_org KEY (id) LABEL employee PROPERTIES ALL COLUMNS )
        EDGE TABLES (
            city_org AS reports_to
                KEY (id)
                SOURCE KEY (id) REFERENCES city_org (id)
                DESTINATION KEY (manager_id) REFERENCES city_org (id)
                LABEL reports_to
                NO PROPERTIES
        );

I tried both forms the standard defines for repeating a path: a quantifier directly on an edge, and a quantified nested group. I was trying to walk from an employee up to the root of the org chart at unknown depth:

    MATCH (a IS employee WHERE a.name = 'Leo Park') -[IS reports_to]->{1,10} (root IS employee)
    -- ERROR:  element pattern quantifier is not supported

    MATCH (a IS employee WHERE a.name = 'Leo Park') (-[IS reports_to]->(IS employee)){1,10} (root IS employee)
    -- ERROR:  unsupported element pattern kind: "nested path pattern"

Both are parsed far enough to be recognized and then explicitly rejected, rather than a plain syntax error, so this doesn't look like a mistake on my end — it reads like the feature genuinely isn't there yet. I retested identically on a fresh PostgreSQL 18.6-based rebuild just to rule out anything environment-specific, and separately re-ran the same two queries against PG19 beta3 after it was tagged; the errors are byte-for-byte identical to what PG19 beta2 produced.

A few questions, if anyone can point me in the right direction:

1. Is quantified path pattern support intentionally deferred past 19, or is there a patch/commitfest entry already in flight that I should be watching? 2. If it's deferred, is there a tracking thread or open item I could link to, so the book can point readers at the right place instead of just saying "not yet"? 3. Is there a recommended workaround inside SQL/PGQ itself for unbounded-depth traversal, or is a recursive CTE still the correct answer for that case in 19?

Happy to share the full reproduction (it's a self-contained example, no extensions, just core PG19) if that's useful. Thanks for all the work getting SQL/PGQ this far — the fixed-depth pattern matching and undirected edge support are genuinely nice additions.

Thanks,
Chris

[1] https://chrislee35.github.io/postgresql-beyond-relational-lab-book/

Reply via email to