On Wed, Oct 13, 2021 at 4:43 PM Mark Dilger
<mark.dil...@enterprisedb.com> wrote:
> The function where the processing occurs is processSQLNamePattern, which is 
> called by pg_dump, pg_dumpall, and psql.  All three callers expect 
> processSQLNamePattern to append where-clauses to a buffer, not to execute any 
> sql of its own.  I propose that processSQLNamePattern return an error code if 
> the pattern contains more than three parts, but otherwise insert the database 
> portion into the buffer as a "pg_catalog.current_database() 
> OPERATOR(pg_catalog.=) <database>", where <database> is a properly escaped 
> representation of the database portion.  Maybe someday we can change that to 
> OPERATOR(pg_catalog.~), but for now we lack the sufficient logic for handling 
> multiple matching database names.  (The situation is different for 
> pg_dumpall, as it's using the normal logic for matching a relation name, not 
> for matching a database, and we'd still be fine matching that against a 
> pattern.)

I agree with matching using OPERATOR(pg_catalog.=) but I think it
should be an error, not a silently-return-nothing case.

> In pg_dumpall, --exclude-database=more.than.one.part would give an error 
> about too many dotted parts rather than simply trying to exclude the last 
> "part" and silently ignoring the prefix, which I think is what v13's 
> pg_dumpall would do.  --exclude-database=db?? would work to exclude four 
> character database names beginning in "db".

Those things sound good.

-- 
Robert Haas
EDB: http://www.enterprisedb.com


Reply via email to