Re: [HACKERS] [PATCH] A hook for session start - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [HACKERS] [PATCH] A hook for session start
Date
Msg-id 13693.1511196988@sss.pgh.pa.us
Whole thread Raw
In response to Re: [HACKERS] [PATCH] A hook for session start  (Fabrízio de Royes Mello <fabriziomello@gmail.com>)
Responses Re: [HACKERS] [PATCH] A hook for session start
List pgsql-hackers
Fabrízio de Royes Mello <fabriziomello@gmail.com> writes:
> typedef enum
> {
>     ClientBackendProcess = -1,
>     CheckerProcess = 0,
>     BootstrapProcess,

Uh, why would you do that (start from -1)?  It makes it impossible to
build an array indexed by the enum, which might be useful --- converting
enum values to strings is one obvious application.  Breaks your
"NUM_PROCTYPES" thing, too.

What I'd do is probably
UnknownProcess = 0,PostmasterProc,StandaloneBackendProc,ClientBackendProc,BootstrapProc,...NUM_PROCTYPES            /*
Mustbe last! */
 

The value of reserving "UnknownProcess = 0" is that a freshly started
process would be correctly not-identified if the variable starts out 0.
(I'd be rather tempted to teach fork_process to reset it to 0 immediately
after forking, too, so that postmaster children couldn't inadvertently
retain the PostmasterProc setting.)

I'm not entirely sure whether standalone backends ought to get their
own code, or whether it's better for them to share ClientBackendProc.
It's something we'd have to work out as we went through the code
making the patch.  How many places would want to distinguish, versus
how many would have to test for two values?

> extern ProcType MyProcType;

"PGProcType", maybe?  "ProcType" alone seems pretty generic.
"ServerProcType" is another possibility for the typedef name,
to emphasize that what we are classifying is the postmaster
and its children.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: [HACKERS] VACUUM and ANALYZE disagreeing on what reltuples means
Next
From: Antonin Houska
Date:
Subject: Re: [HACKERS] CLUSTER command progress monitor