Disallow partitionwise join when collations don't match
authorAmit Langote <amitlan@postgresql.org>
Fri, 8 Nov 2024 07:30:22 +0000 (16:30 +0900)
committerAmit Langote <amitlan@postgresql.org>
Fri, 8 Nov 2024 08:18:55 +0000 (17:18 +0900)
commit33040b1715c7a3450a6b3dc61bd7779a5f9ae709
tree0842ca992b40984bb62c1bd9f1a4bd1f59e1f5bd
parent0a620659c549f05881800fddd1859f3e373dd9cf
Disallow partitionwise join when collations don't match

If the collation of any join key column doesn’t match the collation of
the corresponding partition key, partitionwise joins can yield incorrect
results. For example, rows that would match under the join key collation
might be located in different partitions due to the partitioning
collation. In such cases, a partitionwise join would yield different
results from a non-partitionwise join, so disallow it in such cases.

Reported-by: Tender Wang <tndrwang@gmail.com>
Author: Jian He <jian.universality@gmail.com>
Reviewed-by: Tender Wang <tndrwang@gmail.com>
Reviewed-by: Junwang Zhao <zhjwpku@gmail.com>
Discussion: https://postgr.es/m/CAHewXNno_HKiQ6PqyLYfuqDtwp7KKHZiH1J7Pqyz0nr+PS2Dwg@mail.gmail.com
Backpatch-through: 12
src/backend/optimizer/util/relnode.c
src/test/regress/expected/collate.icu.utf8.out
src/test/regress/sql/collate.icu.utf8.sql