On Wed, Oct 13, 2021 at 10:40 AM Mark Dilger
<mark.dilger@enterprisedb.com> wrote:
> 3a is a bit strange, when considered in the context of patterns. If db1, db2, and db3 all exist and each have a
tablefoo.bar, and psql is connected to db1, how should the command \d db?.foo.bar behave? We have no problem with
db1.foo.bar,but we do have problems with the other two. If the answer is to complain about the databases that are
unconnected,consider what happens if the user writes this in a script when only db1 exists, and later the script stops
workingbecause somebody created database db2. Maybe that's not completely horrible, but surely it is less than ideal.
>
> 3b is what pg_amcheck does. It accepts database.schema.relname, and it will complain if no matching
database/schema/relationcan be found (unless --no-strict-names was given.)
Well, like I said, we can't treat a part that's purportedly a DB name
as a pattern, so when connected to db1, I presume the command \d
db?.foo.bar would have to behave just like \d
dskjlglsghdksgdjkshg.foo.bar. I suppose technically I'm wrong: db?
could be matched against the list of database names as a pattern, and
then we could complain only if it doesn't match exactly and only the
current DB. But I don't like adding a bunch of extra code to
accomplish nothing useful, so if we're going to match it all I think
it should just strcmp().
But I'm still not sure what the best thing to do overall is here.
--
Robert Haas
EDB: http://www.enterprisedb.com