Re: BUG #18568: BUG: Result wrong when do group by on partition table! - Mailing list pgsql-bugs

From Tender Wang
Subject Re: BUG #18568: BUG: Result wrong when do group by on partition table!
Date
Msg-id CAHewXNnzROMZRt=GTmEw1araiAsbS68Bs+Lf3d0s=o01E5B6WQ@mail.gmail.com
Whole thread Raw
In response to BUG #18568: BUG: Result wrong when do group by on partition table!  (PG Bug reporting form <noreply@postgresql.org>)
Responses 回复: BUG #18568: BUG: Result wrong when do group by on partition table!
List pgsql-bugs


狂奔的蜗牛 <1105066510@qq.com> 于2024年8月7日周三 13:35写道:
this case will enter `if (IsA(groupexpr, RelabelType))` branch. 

We set "C" as groupkey's collation, and it's not equal to column's.
In transformGroupClause(), syntax `COLLATE xxx` will create CollateExpr node, and CollateExpr's arg is Var node.
And then, planner will call eval_const_expressions_mutator() to transform CollateExpr to RelableType if CollateExpr->collOid not equal to Collate->arg's collation.

Yech. Thanks for the explanation.
Because exprCollation() return the resultcollid if the nodetag is Relabletype, the expr() && PartKeyCollMatchesExprColl() can handle this situation.
So we don't need "if (IsA(groupexpr, RelableTyple) " this branch.
 


About V3 patch, PartCollMatchesExprColl() may be not suitable, because collation of partkey must be equal to groupkey's, even though they are all InvalidOid.

I'm not sure about what you said.  I uesd it because partition prune do this way. I keep it temporarily. 

The test case in v3 patch only has EXPLAIN statement. I add SELECT statement and make the result more stable according to Aleksander advices.
--
Tender Wang
Attachment

pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #18574: procedure cache does not invalidate when output parameter type mismatch
Next
From: Sandeep Thakkar
Date:
Subject: Re: BUG #18572: Crash during postgresql-16.3-2-windows-x64.exe installation