Re: schema diff tool problem with owner statements

From: Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
To: postgresql(at)yawebhost(dot)com
Cc: "pgadmin-support lists(dot)postgresql(dot)org" <pgadmin-support(at)lists(dot)postgresql(dot)org>
Subject: Re: schema diff tool problem with owner statements
Date: 2021-11-15 12:34:02
Message-ID: CANxoLDfZC_qb_OVGt7zwdBLJ7=zs2r9czCS7QRcL4fDFjMGkRQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-support

Hi

On Fri, Nov 12, 2021 at 8:47 PM <postgresql(at)yawebhost(dot)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 <postgresql(at)yawebhost(dot)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*

In response to

Browse pgadmin-support by date

  From Date Subject
Next Message Akshay Joshi 2021-11-18 11:31:21 pgAdmin 4 v6.2 Released
Previous Message Dave Page 2021-11-15 10:23:03 Re: pgadmin4 for fedora 35