From 28bc5e8ef5fa4a9b80d611c51cd6ba56fe49d9da Mon Sep 17 00:00:00 2001 From: Daniel Kaias Date: Thu, 16 Aug 2018 16:53:19 +1000 Subject: [PATCH] Add support for materialized views --- migra/changes.py | 6 ++++-- tests/FIXTURES/everything/a.sql | 2 ++ tests/FIXTURES/everything/b.sql | 2 ++ tests/FIXTURES/everything/expected.sql | 5 +++++ tests/FIXTURES/everything/expected2.sql | 5 +++++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/migra/changes.py b/migra/changes.py index 5e2d287..1d0b174 100644 --- a/migra/changes.py +++ b/migra/changes.py @@ -180,10 +180,12 @@ class Changes(object): elif name == "views_and_functions": av = self.i_from.views.items() bv = self.i_target.views.items() + am = self.i_from.materialized_views.items() + bm = self.i_target.materialized_views.items() af = self.i_from.functions.items() bf = self.i_target.functions.items() - avf = list(av) + list(af) - bvf = list(bv) + list(bf) + avf = list(av) + list(am) + list(af) + bvf = list(bv) + list(bm) + list(bf) avf = od(sorted(avf)) bvf = od(sorted(bvf)) return partial( diff --git a/tests/FIXTURES/everything/a.sql b/tests/FIXTURES/everything/a.sql index 2be0a60..bbb71ae 100644 --- a/tests/FIXTURES/everything/a.sql +++ b/tests/FIXTURES/everything/a.sql @@ -44,6 +44,8 @@ create index on products(price); create view vvv as select * from products; +create materialized view matvvv as select * from products; + grant select, insert on table products to postgres; create or replace function public.changed(i integer, t text[]) diff --git a/tests/FIXTURES/everything/b.sql b/tests/FIXTURES/everything/b.sql index 79a0ee7..23cf488 100644 --- a/tests/FIXTURES/everything/b.sql +++ b/tests/FIXTURES/everything/b.sql @@ -68,6 +68,8 @@ LANGUAGE PLPGSQL STABLE returns null on null input security invoker; create view vvv as select 2; +create materialized view matvvv as select 2; + CREATE TABLE bug ( id serial, description text, diff --git a/tests/FIXTURES/everything/expected.sql b/tests/FIXTURES/everything/expected.sql index 7b81f5c..5ceea8e 100644 --- a/tests/FIXTURES/everything/expected.sql +++ b/tests/FIXTURES/everything/expected.sql @@ -38,6 +38,8 @@ drop index if exists "public"."products_x_key"; drop function if exists "public"."changed"(i integer, t text[]) cascade; +drop materialized view if exists "public"."matvvv" cascade; + drop view if exists "public"."vvv" cascade; drop table "public"."aunwanted"; @@ -130,6 +132,9 @@ $$ $$ language PLPGSQL VOLATILE RETURNS NULL ON NULL INPUT SECURITY DEFINER; +create materialized view "public"."matvvv" as SELECT 2; + + create view "public"."vvv" as SELECT 2; diff --git a/tests/FIXTURES/everything/expected2.sql b/tests/FIXTURES/everything/expected2.sql index ec711e3..08dee99 100644 --- a/tests/FIXTURES/everything/expected2.sql +++ b/tests/FIXTURES/everything/expected2.sql @@ -38,6 +38,8 @@ drop index if exists "public"."products_x_key"; drop function if exists "public"."changed"(i integer, t text[]) cascade; +drop materialized view if exists "public"."matvvv" cascade; + drop view if exists "public"."vvv" cascade; drop table "public"."aunwanted"; @@ -126,6 +128,9 @@ $$ $$ language PLPGSQL VOLATILE RETURNS NULL ON NULL INPUT SECURITY DEFINER; +create materialized view "public"."matvvv" as SELECT 2; + + create view "public"."vvv" as SELECT 2;