Bug: Missing collation assignment for GRAPH_TABLE COLUMNS expressions
SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
From: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>,
Peter Eisentraut <peter@eisentraut.org>
Date: 2026-04-10T15:41:58Z
Lists: pgsql-hackers
Attachments
- 0001-fix-graph-table-columns-collation.patch (application/octet-stream) patch 0001
Hi hackers,
GRAPH_TABLE COLUMNS expressions that involve collation-dependent functions
or operators fail with:
ERROR: could not determine which collation to use for upper() function
HINT: Use the COLLATE clause to set the collation explicitly.
Setup:
CREATE TABLE vtx (id int PRIMARY KEY, name text);
CREATE TABLE edg (id int PRIMARY KEY,
src int REFERENCES vtx(id),
dst int REFERENCES vtx(id));
INSERT INTO vtx VALUES (1,'Alice'),(2,'Bob'),(3,'Carol');
INSERT INTO edg VALUES (1,1,2),(2,2,3);
CREATE PROPERTY GRAPH g
VERTEX TABLES (vtx KEY (id))
EDGE TABLES (edg KEY (id)
SOURCE KEY (src) REFERENCES vtx (id)
DESTINATION KEY (dst) REFERENCES vtx (id));
postgres=# SELECT * FROM GRAPH_TABLE (g
MATCH (a IS vtx)-[e IS edg]->(b IS vtx) COLUMNS (upper(a.name) AS
src_upper));
ERROR: could not determine which collation to use for upper() function
HINT: Use the COLLATE clause to set the collation explicitly.
In transformRangeGraphTable(), the COLUMNS transformation loop calls
transformExpr()
on each column expression but omits the subsequent assign_expr_collations()
call. Both
WHERE clause transformation sites in parse_graphtable.c correctly include
it.
Attached a patch to fix this.
Thanks,
Satya
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix collation of expressions in GRAPH_TABLE COLUMNS clause
- ac3bcc041c5c 19 (unreleased) landed