Tom Lane <tgl@sss.pgh.pa.us> writes:
> Well, as I said before, I'm not averse to having the default behavior
> *with no pattern* to be that we omit system objects --- and I think we
> could make that apply across the board. What I'm saying is that when
> you give a pattern it should not matter whether an object is system or
> user. It would go like this:
>
> \df -- all non-system functions
> \df sin -- the active (visible) definition of sin()
> \df sin* -- all visible functions starting with "sin"
>
> lesser used cases:
>
> \df * -- all visible functions
> \df *.* -- all functions, period
> \df pg_catalog.* -- all system functions
> \df public.* -- all functions in public
So it seems to me that we made \df consistent with \dt when in fact what we
really wanted is for it to be consistent with \d. I hadn't actually realized
that the behaviour for \d was so different from \dt myself.
The behaviour of \dt in the face of tables which shadow system tables is
actually even stranger:
postgres=# create table pg_proc (t text); CREATE TABLE postgres=# commit; COMMIT postgres=# \dt pg_proc No
matchingrelations found.
And I don't see any reason aggregates, operators, etc, shouldn't be any more
susceptible the shadowing problem.
-- Gregory Stark EnterpriseDB http://www.enterprisedb.com Get trained by Bruce Momjian - ask me about
EnterpriseDB'sPostgreSQL training!