From: | Aldrin Martoq Ahumada <aldrin(dot)martoq(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Postgresql upgrade to 9.5.12/10.3 changes pg_dump format for cloning schemas |
Date: | 2018-03-09 13:26:28 |
Message-ID: | ED39C2F0-21E9-4F7C-B0CF-14A62E78AFD6@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
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 <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
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2018-03-09 14:22:11 | Re: Postgresql upgrade to 9.5.12/10.3 changes pg_dump format for cloning schemas |
Previous Message | wolfgang | 2018-03-09 08:52:26 | pg/tcl performance related |