Subject: BUG #19542: Boolean syntax in GRAPH_TABLE

From: PG Bug reporting form <[email-masked]>
Date: Fri, 03 Jul 2026 13:25:52 +0000

The following bug has been logged on the website:

Bug reference:      19542
Logged by:          Hervé Lefebvre
Email address:      [email-masked]
PostgreSQL version: 19beta1
Operating system:   Linux
Description:        

In MATCH clause you cannot use "WHERE boolean" Syntax. aka :

select * from GRAPH_TABLE (trajet MATCH ( a IS quai where
a.nom_station='Place des Fêtes' )-[t IS dessert where t.correspondance ]->(b
IS quai) columns (a.nom_station as station1, a.num_ligne as ligne1,
b.nom_station as station2, b.num_ligne as ligne2, T.correspondance as
correspondance));
ERROR:  unrecognized node type: 63

You have to add " = true"  (ugly) :
select * from GRAPH_TABLE (trajet MATCH ( a IS quai where
a.nom_station='Place des Fêtes' )-[t IS dessert where t.correspondance=true
]->(b IS quai) columns (a.nom_station as station1, a.num_ligne as ligne1,
b.nom_station as station2, b.num_ligne as ligne2, T.correspondance as
correspondance));
    station1     | ligne1 |    station2     | ligne2 | correspondance
-----------------+--------+-----------------+--------+----------------
 Place des Fêtes | 7bis   | Place des Fêtes | 11     | t
 Place des Fêtes | 11     | Place des Fêtes | 7bis   | t
(2 rows)

---

From: vaibhave postgres <[email-masked]>
Date: Sun, 5 Jul 2026 13:50:18 +0530

Thanks for reporting.

The crash comes from replace_property_refs()
(src/backend/rewrite/rewriteGraphTable.c) which rewrites the
GraphPropertyRef nodes.

It calls expression_tree_mutator() directly on the top level node instead
of calling it's mutator (replace_property_refs_mutator()) which treats
GraphPropertyRef as a leaf & just copies it unchanged.

```
case T_GraphLabelRef:
case T_GraphPropertyRef:
case T_MergeSupportFunc:

return copyObject(node);

```

The fix is to call the mutator directly at the entry point.

Thanks,
Vaibhave.

---

From: Peter Eisentraut <[email-masked]>
Date: Wed, 8 Jul 2026 09:51:11 +0200

On 05.07.26 10:20, vaibhave postgres wrote:
> Thanks for reporting.
> 
> The crash comes from replace_property_refs() (src/backend/rewrite/ 
> rewriteGraphTable.c) which rewrites the GraphPropertyRef nodes.
> 
> It calls expression_tree_mutator() directly on the top level node 
> instead of calling it's mutator (replace_property_refs_mutator()) which 
> treats GraphPropertyRef as a leaf & just copies it unchanged.
> 
>     ```
>     case T_GraphLabelRef:
>     case T_GraphPropertyRef:
>     case T_MergeSupportFunc:
> 
>         return copyObject(node);
> 
>     ```
> 
> 

Thanks, this has also been discovered in [0], and the fix there is the same.

[0]: 
https://www.postgresql.org/message-id/flat/20260630173053.51.noahmisch%40microsoft.com