Extensions not dumped when --schema is used

Guillaume Lelarge <guillaume@lelarge.info>

From: Guillaume Lelarge <guillaume@lelarge.info>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-05-20T08:06:01Z
Lists: pgsql-hackers
Hello,

I've discovered something today that I didn't really expect. When a user
dumps a database with the --schema flag of pg_dump, extensions in this
schema aren't dumped. As far as I can tell, the documentation isn't clear
about this ("Dump only schemas matching pattern; this selects both the
schema itself, and all its contained objects."), though the source code
definitely is ("We dump all user-added extensions by default, or none of
them if include_everything is false (i.e., a --schema or --table switch was
given).", in pg_dump.c).

I was wondering the reason behind this choice. If anyone knows, I'd be
happy to hear about it.

I see two things:
* it's been overlooked, and we should dump all the extensions available in
a schema if this schema has been selected through the --schema flag.
* it's kind of like the large objects handling, and I'd pretty interested
in adding a --extensions (as the same way there is a --blobs flag).

Thanks.

Regards.


-- 
Guillaume.

Commits

  1. Tweak behavior of pg_dump --extension with configuration tables

  2. Remove duplicated --no-sync switches in new tests of test_pg_dump

  3. Add support for --extension in pg_dump