From: | Xuneng Zhou <xunengzhou(at)gmail(dot)com> |
---|---|
To: | Tender Wang <tndrwang(at)gmail(dot)com> |
Cc: | Richard Guo <guofenglinux(at)gmail(dot)com>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Fix an unnecessary cast calling elog in ExecHashJoinImpl |
Date: | 2025-10-17 02:31:38 |
Message-ID: | CABPTF7XuRcGssky1NkWoZB+XkDsS4aFx4wg2KFNVPi_-Rm_Cyw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Tender,
On Thu, Oct 16, 2025 at 8:24 PM Tender Wang <tndrwang(at)gmail(dot)com> wrote:
>
>
>
> Richard Guo <guofenglinux(at)gmail(dot)com> 于2025年10月16日周四 17:53写道:
>>
>> On Thu, Oct 16, 2025 at 4:07 PM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
>> > On Mon, Sep 1, 2025 at 9:26 AM Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> wrote:
>> > > On Aug 30, 2025, at 14:09, Tender Wang <tndrwang(at)gmail(dot)com> wrote:
>> > > While debugging the HashJoin codes, I noticed below codes in ExecHashJoinImpl():
>> > >
>> > > elog(ERROR, "unrecognized hashjoin state: %d",
>> > > (int) node->hj_JoinState);
>> > >
>> > > The type of hj_JoinState is already int, so the cast seems unnecessary.
>> > > So I remove it in the attached patch.
>>
>> > > Yes, hj_JoinState is of type int, so the type cast to int is not needed. The change looks good to me.
>>
>> > LGTM.
>>
>> I think we can remove this cast, although it's so trivial that it
>> doesn't seem to have any real impact. A similar cast also exists for
>> mj_JoinState in ExecMergeJoin().
>>
>> (These values represent the state of the Join state machine for
>> HashJoin and MergeJoin respectively, so I kind of wonder if it might
>> be better to define them as enum rather than using int.)
>
>
> Make sense.
>
> Please check the v2 patch.
If we decide to converts HashJoin and MergeJoin state machine
definitions from #define macros to enum types, we might need to keep
the (int) casts from the elog() error messages:
elog(ERROR, "unrecognized hashjoin state: %d", (int) node->hj_JoinState);
elog(ERROR, "unrecognized mergejoin state: %d", (int) node->mj_JoinState);
The enum comment has inconsistent indentation:
+ /*
+ * States of the ExecMergeJoin state machine
+ */
Best,
Xuneng
From | Date | Subject | |
---|---|---|---|
Next Message | Chao Li | 2025-10-17 03:13:44 | Re: Optimizing ResouceOwner to speed up COPY |
Previous Message | Xuneng Zhou | 2025-10-17 02:10:12 | Re: [Proposal] Expose internal MultiXact member count function for efficient monitoring |