Thread

  1. Re: Use opresulttype instead of calling SearchSysCache1() in match_orclause_to_indexcol()

    Tender Wang <tndrwang@gmail.com> — 2025-10-18T03:12:12Z

    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