Re: UNION versus collations
Laurenz Albe <laurenz.albe@cybertec.at>
From: Laurenz Albe <laurenz.albe@cybertec.at>
To: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@lists.postgresql.org
Date: 2024-11-19T05:56:34Z
Lists: pgsql-hackers
On Mon, 2024-11-18 at 17:56 -0500, Tom Lane wrote: > prepunion.c's plan_union_children(), which merges > identically-propertied UNION operations into one, has this comment: > > * NOTE: currently, we ignore collations while determining if a child has > * the same properties. This is semantically sound only so long as all > * collations have the same notion of equality. It is valid from an > * implementation standpoint because we don't care about the ordering of > * a UNION child's result: UNION ALL results are always unordered, and > * generate_union_paths will force a fresh sort if the top level is a UNION. > > This argument seems well past its sell-by date. In the first place, > now that we have nondeterministic collations we can't assume that > "all collations have the same notion of equality". > > [...] > > So I think we ought to apply the attached as far back as we have > nondeterministic collations. +1 This also reminded me of [1], where I cannot think of a good fix. Yours, Laurenz Albe [1]: https://postgr.es/m/8ef4899c4acfebca45cc6c042a6dc611d25ffab1.camel%40cybertec.at
Commits
-
Compare collations before merging UNION operations.
- fd3383ff1107 15.11 landed
- f286f64bcf01 16.7 landed
- c1ebef3c10db 17.3 landed
- a43d7a8c7cce 18.0 landed
- 6b66dba3f8d8 13.19 landed
- 44a4a521d03a 14.16 landed
-
Allow planner to use Merge Append to efficiently implement UNION
- 66c0185a3d14 17.0 cited