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..?


    Thank you,

    Wes





--
*Thanks & Regards*
*Akshay Joshi*
*pgAdmin Hacker | Principal Software Architect*
*EDB Postgres <http://edbpostgres.com>*
*Mobile: +91 976-788-8246
*

Reply via email to