On 11/19/2017 04:49 PM, Tom Lane wrote: > Andrew Dunstan <andrew.duns...@2ndquadrant.com> writes: >> I think this: >> #define IsClientBackend() \ >> (MyBackendId != InvalidBackendId && \ >> !IsAutoVacuumLauncherProcess() && \ >> !IsAutoVacuumWorkerProcess() && \ >> !am_walsender && \ >> !IsBackgroundWorker) >> probably belongs somewhere more central. Surely this isn't the only >> place that we want to be able to run such a test? > Hm. It also seems awfully awkward. Perhaps it's not being used anyplace > performance-critical, but regardless of speed it seems like a modularity > violation, in that client backends have to be explicitly aware of > everything that isn't a "client backend". > > Maybe it's time to invent something corresponding to AuxProcType > for non "aux" processes, or else to fold all types of Postgres > processes into the same enum.
Yes, agreed, The above is pretty ugly and likely to be quite fragile. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services