On Sun, Dec 15, 2024 at 12:29 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Pavel Stehule <pavel.stehule@gmail.com> writes: > ne 15. 12. 2024 v 17:59 odesílatel Ron Johnson <ronljohnsonjr@gmail.com> > napsal: >> A new boolean column named "indissystem" that's true only for system >> relations would make *many* maintenance queries cleaner, since they'd >> look like: >> select ...
> oid of all system objects is less then 0x4000
That wouldn't help for excluding temp schemas, and it's not totally trustworthy for information_schema either.
But I think the real problem with Ron's proposal is that it presumes there is a one-size-fits-all notion of "system schema". As a counterexample, for some maintenance activities (such as vacuuming) you might wish to process pg_catalog.
In that case, one would explicitly mention pg_catalog, no?
where cl.relnamespace = nsp.oid and (nsp.indissystem = false or nsp.nspname = 'pg_catalog');
What I'd suggest as an improvement that could be implemented immediately is to wrap the checks in a user-defined function like "is_system_schema(nspname name)".