Dimitri Fontaine wrote:
-- Start of PGP signed section.
> Le mardi 20 janvier 2009, Bruce Momjian a ?crit?:
> > Robert Haas wrote:
> > > > Here is what I hope is a consensus patch. It adds 'A' to show all
> > > > objects, including system ones. It turns out that this is how 'S'
> > > > works now in CVS, but 'S' is unclear because it suggests just system
> > > > objects; 'A' for show 'all' objects seems clearer.
> > >
> > > I think it's probably fine for "S" to mean "include system objects"
> > > rather than "show only system objects". Everyone should be relatively
> > > used to "S" by now; I think it's less confusing to keep the same
> > > letter even if the behavior has been adjusted somewhat. Though others
> > > may disagree?
>
> I still think that given a pattern, psql commands should simply mimic
> whatever
> is the server way of using search_path. I'd really like \df foo and \d foo to
> follow the same rules as my production queries wrt to how to find objects
> when I'm too lazy to schema qualify their name.
>
> Now, it's been advocated for the sake of simplicity to have with-pattern and
> without-pattern options behave roughly the same way. I can't find it
> difficult to explain the two behaviours here, all the more when looking at
> current \d and \dt differences.
The \d and \dt differences are fixed/gone in current CVS.
> What I'd like to propose is for \df without pattern to behave exactly like \df
> with pattern, *including* wrt to ordering the output. Functions listed in
> search_path order, pg_catalog implicitly part of it, but as its *last*
> element. Or whatever server object lookup code sayth.
I personally liked the idea of searching pg_catalog for a pattern, but
what turned me against it was this behavior:
\d
long list of user tables
and then the user wants to see just the tables that begin with 'p':
\d p*
list of system and user tables that start with 'p'
All of a sudden they see many system tables. It is hard to call that
behavior logical or expected. One unusual approach would be to search
pg_catalog only when a _non-wildcard_ pattern was supplied, so:
\d p*
would show user tables beginning with 'p', but:
\d pg_class
would find the 'pg_class' table that is the search path, typically from
pg_catalog. It might be a little awkward to document, but might be the
most acceptable solution. The very good argument _against_ this
solution is that:
\d pg_class*
would show no rows while:
\d pg_class
would show the pg_catalog entry. This is also odd and unexpected, which
led me to just having people use 'S' when they want pg_catalog involved.
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers