Hi On Fri, Nov 12, 2021 at 8:47 PM <postgre...@yawebhost.com> wrote:
> Thanks for the reply, comment embedded below: > On 11/11/21 11:58 PM, Akshay Joshi wrote: > > Hi > > On Fri, Nov 12, 2021 at 12:45 AM <postgre...@yawebhost.com> wrote: > >> I'm trying to compare 2 schemas (devschema is the source and testschema >> is the target) and generate a script that can be run on the target that >> will create the missing tables. I ran the schema diff, and it generated >> items like this: >> >> CREATE TABLE IF NOT EXISTS tablename >> ( >> fields, etc >> ) >> TABLESPACE pg_default; >> >> ALTER TABLE IF EXISTS public.tablename >> OWNER to devschema; >> >> >> When I run the script on testschema, I don't want it trying to alter the >> owner of the table because that statement will fail anyway. >> >> I found a setting in "preferences" called "ignore owner", and set it to >> true (If set to True, then the Schema Diff tool ignores the owner while >> comparing the objects.) >> >> However, this setting has no effect. The alter table statements still >> get generated, and I am left to remove them manually. >> >> If there is something I'm doing wrong please let me now. I swear this >> setting worked many months ago when I used this tool, but it seems to >> not be working now. >> >> Version 6.1 (downloaded and updated today) >> > > This is by design, as at the time of comparison or generating the > script we can't check the owner is exist on the target schema or not. > Consider the case where the owner exists and the user wants to run the same > DDL statement. I think the user needs to manually change the ow > > ner. There is a find and replace option in the query tool by which we can > easily replace. > > Maybe I'm missing something (I don't know a lot about postgres internals, > all I want is to copy tables over). That setting in the preferences SEEMS > to be what I need here. I'd simply like the diff tool to ignore the > differences in the owner, and not generate the "ALTER TABLE IF EXISTS > public.tablename OWNER to devschema;" statement. My script will run fine > on the target if I delete all those alter table statements, and it will > also run fine if I search and replace 'devschema' with 'testschema', but > I'd rather not have to do either of those. Isn't this a common use case > when the user wants to get 2 schemas "in sync" but they don't care about > the fact that the owner of the objects on the source and target is > different..? > I understood the scenario, but the most common use case that I have seen is to make 2 schemas "in sync" with the appropriate owner. In such a case, users will have to write the complete ALTER statement for each object which is more time-consuming (find all the create statements and write ALTER..) then find and replace. I'll suggest you create a new feature request https://redmine.postgresql.org/projects/pgadmin4/issues/new will check the feasibility. > >> Thank you, >> >> Wes >> >> >> >> > > -- > *Thanks & Regards* > *Akshay Joshi* > *pgAdmin Hacker | Principal Software Architect* > *EDB Postgres <http://edbpostgres.com>* > > *Mobile: +91 976-788-8246 * > > -- *Thanks & Regards* *Akshay Joshi* *pgAdmin Hacker | Principal Software Architect* *EDB Postgres <http://edbpostgres.com>* *Mobile: +91 976-788-8246*