Re: Use opresulttype instead of calling SearchSysCache1() in match_orclause_to_indexcol()
Tender Wang <tndrwang@gmail.com>
From: Tender Wang <tndrwang@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-18T03:12:12Z
Lists: pgsql-hackers
Attachments
- 0001-Remove-some-asserts.patch (application/octet-stream)
Tom Lane <tgl@sss.pgh.pa.us> 于2025年9月20日周六 00:16写道: > Tender Wang <tndrwang@gmail.com> writes: > > While working on another issue, I stepped into > match_orclause_to_indexcol(). > > I found below codes: > > > /* Only the operator returning a boolean suit the transformation. */ > > if (get_op_rettype(opno) != BOOLOID) > > break; > > I don't understand what purpose this check serves at all. > We are looking at an arm of an OR clause, so it had better > yield boolean. > Yeah, this check doesn't need any more. I removed this check in the attached patch. In match_index_to_operand(), the indexExpr has been ignored, so I removed below check, too. - if (IsA(indexExpr, RelabelType)) - indexExpr = (Node *) ((RelabelType *) indexExpr)->arg; > If anything, this is actively wrong, because for example it'd > reject a polymorphic operator that yields boolean in-context. > > In general, this code looks like a mess. There are a lot of > Asserts that might be okay in development but probably should > not have got committed, and the comments need work. > These assertions were removed by me, too. I didn’t modify these code comments since English isn’t my native language, and I’d appreciate your help with them. -- Thanks, Tender Wang