On Sat, Sep 3, 2022 at 5:11 PM Amit Kapila <amit.kapil...@gmail.com> wrote:
> > I have found one more issue with this approach of rewriting the > > conflicting table. Earlier I thought we could do the conflict > > checking and rewriting inside create_new_objects() right before the > > restore command. But after implementing (while testing) this I > > realized that we DROP and CREATE the database while restoring the dump > > that means it will again generate the conflicting system tables. So > > theoretically the rewriting should go in between the CREATE DATABASE > > and restoring the object but as of now both create database and > > restoring other objects are part of a single dump file. I haven't yet > > analyzed how feasible it is to generate the dump in two parts, first > > part just to create the database and in second part restore the rest > > of the object. > > > > Isn't this happening because we are passing "--clean > --create"/"--create" options to pg_restore in create_new_objects()? If > so, then I think one idea to decouple would be to not use those > options. Perform drop/create separately via commands (for create, we > need to generate the command as we are generating while generating the > dump in custom format), then rewrite the conflicting tables, and > finally restore the dump. Hmm, you are right. So I think something like this is possible to do, I will explore this more. Thanks for the idea. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com