Re: Use an enum for RELKIND_*? - Mailing list pgsql-hackers

From Kyotaro HORIGUCHI
Subject Re: Use an enum for RELKIND_*?
Date
Msg-id 20190124.194428.92612634.horiguchi.kyotaro@lab.ntt.co.jp
Whole thread Raw
In response to Re: Use an enum for RELKIND_*?  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Use an enum for RELKIND_*?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
At Wed, 19 Dec 2018 09:55:22 -0500, Tom Lane <tgl@sss.pgh.pa.us> wrote in <10268.1545231322@sss.pgh.pa.us>
> Andres Freund <andres@anarazel.de> writes:
> > On 2018-12-18 23:17:54 -0500, Tom Lane wrote:
> >> Yeah, that would sure make things better.  I was considering
> >> something like
> >>
> >>     #ifndef USE_ASSERT_CHECKING
> >>         default:
> >>             elog(ERROR, ...);
> >>     #endif
> 
> > Yea, that's the best I can come up with too.  I think we'd probably want
> > to have the warning available during development mainly, so I'm not sure
> > the "lonely buildfarm animal" approach buys us enough.
> 
> Well, if it's controlled by some dedicated symbol ("CHECK_ENUM_SWITCHES"
> or such) then you could certainly run a test compile with that turned
> on, if you felt the need to.  But I don't really buy the complaint
> that leaving it to the buildfarm to find such problems wouldn't work.
> They're almost always simple, easily-fixed oversights.
> 
> Also, if we wrap all this up in a macro then it'd be possible to do
> other things by adjusting the macro.  I'm envisioning
> 
>     switch ((RelationRelkind) rel->rd_rel->relkind)
>     {
>         case ...
>         ...
> 
>         CHECK_ENUM_SWITCH(RelationRelkind, rel->rd_rel->relkind);
>     }

I might misunderstand something, but my compiler (gcc 7.3.1)
won't be quiet about omitted value even with default:.

>   switch ((x) v)
>   {
>      case A: ...
>      case B: ...
>      default: ...
>   }
> 
> t.c:12:3: warning: enumeration value 'C' not handled in switch [-Wswitch-enum]

Isn't it enough that at least one platform correctly warns that?

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: using expression syntax for partition bounds
Next
From: Greg Stark
Date:
Subject: Re: Use an enum for RELKIND_*?