Re: BUG #18652: Planner can not find pathkey item to sort for query with expression and expression index

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: exclusion@gmail.com
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-10-09T21:43:03Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes:
> The following query:
> CREATE TABLE t(i int, j int);
> CREATE INDEX idx on t((i + 0));

> SELECT * FROM t,
>   (SELECT i + 0 AS i FROM
>     (SELECT i FROM t UNION ALL SELECT i + 1 FROM t) AS t1
>   ) AS t2
> WHERE t2.i = t.j;

> fails with:
> ERROR:  XX000: could not find pathkey item to sort
> LOCATION:  prepare_sort_from_pathkeys, createplan.c:6350

> The error occurs only when the expression in SELECT i + 0 AS i FROM
> matches the expression in an index.

> Reproduced on REL_10_STABLE .. master.

Hm, this seems quite an old bug: I can reproduce it on 9.1 but
not 9.0.  Unfortunately, that's too far back to build easily
on modern platforms, so I'm not seeing a way to "git bisect"
for more insight.

It looks like we are generating a Path tree in which one of the
inputs to a MergeAppend is a plain unsorted seqscan, which'd
be all right except it doesn't expose the required sort value
in its targetlist.  More later.

			regards, tom lane



Commits

  1. Correctly identify which EC members are computable at a plan node.

  2. Support MergeAppend plans, to allow sorted output from append relations.