Re: Postgresql upgrade to 9.5.12/10.3 changes pg_dump format for cloning schemas

From: Melvin Davidson <melvin6925(at)gmail(dot)com>
To: Aldrin Martoq Ahumada <aldrin(dot)martoq(at)gmail(dot)com>
Cc: Andre Oliveira Freitas <afreitas(at)callixbrasil(dot)com>, "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Postgresql upgrade to 9.5.12/10.3 changes pg_dump format for cloning schemas
Date: 2018-03-09 15:15:44
Message-ID: CANu8FiyWLBx7k2KV0OkYO_MV6J5efEBMLzoj_J=v+8nVRe1-+Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Mar 9, 2018 at 10:00 AM, Aldrin Martoq Ahumada <
aldrin(dot)martoq(at)gmail(dot)com> wrote:

> Hi Andre,
>
> Yes, here is the issue: https://github.com/influitive/apartment/issues/532
>
> It happens if you configured apartment with use_sql=true, which means it
> clones the schema from pg_dump. My first attempt was to “fix” the script
> generated by pg_dump, but I feel it will be a mess. We solved our issue
> going back to use_sql=false, which is the default (creates the schema from
> db/schema.rb). But there is people that have other requirements, like
> functions, so the easier way for them is to keep use_sql and replace
> strings in the script.
>
>
> Cheers,
>
> On Mar 9, 2018, at 11:51 AM, Andre Oliveira Freitas <
> afreitas(at)callixbrasil(dot)com> wrote:
>
> Hello Aldrin,
>
> I'm also using apartment with postgresql 9.6.6, and I don't see any
> issue with it. Are you using Apartment::Tenant.create?
>
> 2018-03-09 10:26 GMT-03:00 Aldrin Martoq Ahumada <aldrin(dot)martoq(at)gmail(dot)com
> >:
>
> Hi,
>
> For a multi tenant system, we are using the following command to blindly
> clone a schema into another:
> pg_dump -s -x -O -n #{default_tenant} #{dbname}
>
>
> This is done for us by a rails gem, which then feeds that script into the
> new created schema for the new tenant.
> https://github.com/influitive/apartment/blob/
> 80a21f2e1cdcbe5b0bd976f88c14332657804536/lib/apartment/
> adapters/postgresql_adapter.rb#L150
>
>
>
>
> When we upgraded from 9.5.11 to 9.5.12, the format of the dump changed (it
> now always appends the schema name), so this is broken. We could patch the
> SQL generated, but that’s not a generic/robust solution.
>
> # pg_dump postgresql 9.5.11
> SET search_path = public, pg_catalog;
> CREATE TABLE ahoy_events (
> id bigint NOT NULL,
> visit_id integer,
> user_id integer,
> name character varying,
> properties jsonb,
> "time" timestamp without time zone
> );
>
> # pg_dump postgresql 9.5.12
> CREATE TABLE public.ahoy_events (
> id bigint NOT NULL,
> visit_id integer,
> user_id integer,
> name character varying,
> properties jsonb,
> "time" timestamp without time zone
> );
>
>
>
> Thinking in the long term, how could be the best way to clone a schema into
> another?
>
>
>
>
> —
> Aldrin
>
>
>
>
> --
>
> André Luis O. Freitas
> System Architect
>
> Rua do Rócio, 220 - Cj. 72
> São Paulo - SP - 04552-000
> 55 11 4063 4222
>
> afreitas(at)callix(dot)com(dot)br
> www.callix.com.br
>
>
>

* >...how could be the best way to clone a schema into another? The safest
way is to use pgdump -F p -n <the_schema_name> > schema.sql Then edit
schema.sql and change all references to old_schema name to new_schema
name. Finally, use psql < schema.sql to create the new_schema. That being
said, a year ago I optimized a function originally written by Emanuel
'3manuek' called clone_schema, which is added to the public schema. It
clones all sequences, tables, indexes, rules, triggers, data(optional),
views & functions from any existing schema to a new schema SAMPLE
CALL: SELECT clone_schema('public', 'new_schema', TRUE); I've attached it
for your convenience. disclaimer: I do not accept any responsibility for
any unknow bugs in the function. Test first and use at your own risk.-- *

*Melvin DavidsonMaj. Database & Exploration SpecialistUniverse Exploration
Command – UXC*
Employment by invitation only!

Attachment Content-Type Size
clone_schema.sql text/plain 13.7 KB

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2018-03-09 16:43:00 Re: pg/tcl performance related
Previous Message Aldrin Martoq Ahumada 2018-03-09 15:00:43 Re: Postgresql upgrade to 9.5.12/10.3 changes pg_dump format for cloning schemas