Re: [PATCH] Resolve unknown-type literals in GRAPH_TABLE COLUMNS
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
To: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
Cc: Junwang Zhao <zhjwpku@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-29T14:09:41Z
Lists: pgsql-hackers
Attachments
- v20260429-0001-Resolve-unknown-type-literals-in-GRAPH_TAB.patch (text/x-patch) patch v20260429-0001
On Mon, Apr 27, 2026 at 11:34 AM SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> wrote: > > Hi, > > On Sun, Apr 26, 2026 at 8:10 AM Junwang Zhao <zhjwpku@gmail.com> wrote: >> >> Hi SATYANARAYANA, >> >> On Sun, Apr 26, 2026 at 3:53 AM SATYANARAYANA NARLAPURAM >> <satyanarlapuram@gmail.com> wrote: >> > >> > Hi hackers, >> > >> > transformRangeGraphTable() calls transformExpr() and >> > assign_list_collations() for COLUMNS expressions but missed calling >> > resolveTargetListUnknowns(). As a result, literals such as 'val1' >> > in a COLUMNS clause retained type "unknown", causing failures with >> > ORDER BY, UNION, and output conversions. >> > >> > Fix by calling resolveTargetListUnknowns() on the columns target >> > list right after assign_list_collations(), similar to SELECT target lists in >> > transformSelectStmt(). >> > >> > Attached a patch to fix this, which also includes test cases to reproduce. >> >> I can reproduce this and the patch fixes it. >> >> One question: why is resolveTargetListUnknowns called after >> assign_list_collations? >> >> I'm asking because in transformSelectStmt, resolveTargetListUnknowns >> is invoked before assign_query_collations. It might not matter, but keeping >> the order consistent would be good for readers. > > > Updated the patch. It should be before. Do we really need a test for ORDER BY on a literal column? I replaced all the test queries with a single one which covers all the scenarios covered by those queries. The patch needed to consider pstate->p_resolve_unknowns. Unknown literals are not resolved as text always. See the test query. -- Best Wishes, Ashutosh Bapat
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Resolve unknown-type literals in GRAPH_TABLE COLUMNS
- cc9aa7f3a983 19 (unreleased) landed
- efd7d8d7d495 master landed