Re: BUG #18568: BUG: Result wrong when do group by on partition table!
Tender Wang <tndrwang@gmail.com>
From: Tender Wang <tndrwang@gmail.com>
To: 1105066510@qq.com, pgsql-bugs@lists.postgresql.org
Date: 2024-08-06T09:27:07Z
Lists: pgsql-bugs
Attachments
- v2-0001-Fix-collation-different-between-columan-collation.patch (application/octet-stream) patch v2-0001
Tender Wang <tndrwang@gmail.com> 于2024年8月6日周二 16:42写道: > Yeah, I can reproduce $subject on HEAD. > But I found this when debug into group_by_has_partkey(), as below: > call nodeToString(groupexprs): > VAR : varcollid 16384 > call nodeToString(partexpr): > VAR: varcollid 16384 > > So the collid of partkey and groupexpr is same, so add check here may not > fix this issue. > > I continue to find out why the collation id of partkey is 16384(e.g. > case_insensitive). The partkey expr info is > set in set_baserel_partition_key_exprs(), which it uses > partkey->parttypcoll[cnt] value not partkey->partcollation value. > > And partkey->parttypcoll[cnt] is assigned from pg_attribute , which is the > column c meta data. > Should we use partkey->partcollation value? I try to fix that in the > attached patch. I add your case in the test, and I don't find > failed regress. > The plan seems not what we want, because I forgot to set enable_partitionwise_aggregate to true. -- Tender Wang
Commits
-
Disallow partitionwise grouping when collations don't match
- 90fe6251c816 18.0 landed
- b6484ca9535e 17.1 landed
- dd2f8ebee221 16.5 landed
- 0a620659c549 15.9 landed
- 96f9b29a3e1e 14.14 landed
- ff65f695c0d3 13.17 landed
- 46d9be5efb1a 12.21 landed
-
For partitionwise join, match on partcollation, not parttypcoll.
- 2af28e603319 11.0 cited