Thread: enum-ify resource manager's xl_info values

enum-ify resource manager's xl_info values

From
Andres Freund
Date:
Hi,

Would somebody object to making the rmgr's invo value #defines like:

/* XLOG info values for XLOG rmgr */
#define XLOG_CHECKPOINT_SHUTDOWN        0x00
#define XLOG_CHECKPOINT_ONLINE            0x10
#define XLOG_NOOP                        0x20
#define XLOG_NEXTOID                    0x30
#define XLOG_SWITCH                        0x40
#define XLOG_BACKUP_END                    0x50
#define XLOG_PARAMETER_CHANGE            0x60
#define XLOG_RESTORE_POINT                0x70
#define XLOG_FPW_CHANGE                    0x80
#define XLOG_END_OF_RECOVERY            0x90
#define XLOG_FPI                        0xA0

into enums? We already have a bunch of places looking at those values
and if/when changeset extraction makes it in, it's going to be one
more. Having the compiler tell you where a new value should have been
been added as well helps.

Greetings,

Andres Freund

-- Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



Re: enum-ify resource manager's xl_info values

From
Tom Lane
Date:
Andres Freund <andres@2ndquadrant.com> writes:
> Would somebody object to making the rmgr's invo value #defines like:
> into enums?

I think that will create more problems than it fixes.  For one thing,
the same field is used to store values that would need to be multiple
independent enum types; and we also store additional bits into that
field.
        regards, tom lane



Re: enum-ify resource manager's xl_info values

From
Andres Freund
Date:
On 2013-07-22 08:53:53 -0400, Tom Lane wrote:
> Andres Freund <andres@2ndquadrant.com> writes:
> > Would somebody object to making the rmgr's invo value #defines like:
> > into enums?
> 
> I think that will create more problems than it fixes.  For one thing,
> the same field is used to store values that would need to be multiple
> independent enum types; and we also store additional bits into that
> field.

Oh, I don't want to change the definition of XLogRecord or such. I just
want to make the series of #defines an enum so you can write something
like
inf = record->xl_info & ~XLR_INFO_MASK;
switch ((XLogXactRecordType) info)
{   case ....;
}

Greetings,

Andres Freund

-- Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



Re: enum-ify resource manager's xl_info values

From
Peter Eisentraut
Date:
On 7/22/13 7:21 AM, Andres Freund wrote:
> Would somebody object to making the rmgr's invo value #defines like:

I'm suspicious of enums that are assigned specific values.  Enums should
stand by themselves, they shouldn't be a symbolic layer on top of some
other numbering or bit-fiddling scheme.