Bryn Llewellyn <bryn@xxxxxxxxxxxx> writes: > Maybe this entire discussion is moot when hackers can read the C code of PG's implementation… Hmm ... in one way that's unrelated, but in another way perhaps it is. Postgres' system catalogs have always been user-readable as much as possible, excepting only cases that clearly might contain private data such as pg_statistic or pg_user_mapping.umoptions. We have pretty much no interest in revisiting that design choice, even if doing so wouldn't likely break a couple decades' worth of client-side software development. It's not very hard to draw a line connecting that design choice to our open-source ethos. Anyway, if you feel a need to prevent user A from seeing the catalog entries for user B's database objects, the only answer we have is to put A and B into separate databases. If despite that you want A and B to be able to share some data, you can probably build the connections you need using foreign tables or logical replication; but there's not a lot of pre-fab infrastructure for that, AFAIK. regards, tom lane