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

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

Responses

Browse pgsql-general by date

  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