Re: Enumize logical replication message actions
Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com>
From: Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: smithpb2250@gmail.com, Alvaro Herrera <alvherre@alvh.no-ip.org>, Andres Freund <andres@anarazel.de>,
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>,
amit.kapila16@gmail.com
Date: 2020-10-23T12:53:40Z
Lists: pgsql-hackers
Attachments
- 0001-Enumize-top-level-logical-replication-actions.v2.patch (text/x-patch) patch v2-0001
On Fri, 23 Oct 2020 at 17:02, Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote: > At Fri, 23 Oct 2020 19:53:00 +1100, Peter Smith <smithpb2250@gmail.com> > wrote in > > On Fri, Oct 23, 2020 at 5:20 PM Kyotaro Horiguchi > > <horikyota.ntt@gmail.com> wrote: > > > > > > At Thu, 22 Oct 2020 22:31:41 -0300, Alvaro Herrera < > alvherre@alvh.no-ip.org> wrote in > > > > On 2020-Oct-22, Ashutosh Bapat wrote: > > > > > > > > > On Thu, 22 Oct 2020 at 14:46, Kyotaro Horiguchi < > horikyota.ntt@gmail.com> > > > > > wrote: > > > > > > > > > > pg_send_logicalrep_msg_type() looks somewhat too-much. If we > need > > > > > > something like that we shouldn't do this refactoring, I think. > > > > > > > > > > Enum is an integer, and we want to send byte. The function asserts > that the > > > > > enum fits a byte. If there's a way to declare byte long enums I > would use > > > > > that. But I didn't find a way to do that. > > > > The pq_send_logicalrep_msg_type() function seemed a bit overkill to me. > > Ah, yes, it is what I meant. I didn't come up with the word "overkill". > > > The comment in the LogicalRepMsgType enum will sufficiently ensure > > nobody is going to accidentally add any bad replication message codes. > > And it's not like these are going to be changed often. > > Agreed. > > > Why not simply downcast your enums when calling pq_sendbyte? > > There are only a few of them. > > > > e.g. pq_sendbyte(out, (uint8)LOGICAL_REP_MSG_STREAM_COMMIT); > > If you are worried about compiler warning, that explicit cast is not > required. Even if the symbol is larger than 0xff, the upper bytes are > silently truncated off. > > I agree with Peter that the prologue of LogicalRepMsgType is enough. I also agree with Kyotaro, that explicit cast is unnecessary. All this together makes the second patch useless. Removed it. Instead used Kyotaro's idea in previous mail. PFA updated patch. -- Best Wishes, Ashutosh
Commits
-
Use Enums for logical replication message types at more places.
- f3a8f73ec274 14.0 landed
-
Use Enum for top level logical replication message types.
- 644f0d7cc9c2 14.0 landed