> I think that there are some (possibly) tricky challenges that haven't > been discussed yet to support replicating global objects. > > First, as for publications having global objects (roles, databases, > and tablespaces), but storing them in database specific tables like > pg_publication doesn't make sense, because it should be at some shared > place where all databases can have access to it. Maybe we need to have > a shared catalog like pg_shpublication or pg_publication_role to store > publications related to global objects or the relationship between > such publications and global objects. Second, we might need to change > the logical decoding infrastructure so that it's aware of shared > catalog changes.
Thanks for the feedback. This is insightful. > Currently we need to scan only db-specific catalogs. > Finally, since we process CREATE DATABASE in a different way than > other DDLs (by cloning another database such as template1), simply > replicating the CREATE DATABASE statement would not produce the same > results as the publisher. Also, since event triggers are not fired on > DDLs for global objects, always WAL-logging such DDL statements like > the proposed patch does is not a good idea. > Given that there seems to be some tricky problems and there is a > discussion for cutting the scope to make the initial patch small[1], I > think it's better to do this work after the first version. Agreed. Regards, Zane