From 7d3cd4b4f782a195e85f10cb38d8b8affea0a0ce Mon Sep 17 00:00:00 2001 From: Jeff Casavant Date: Thu, 7 May 2015 14:28:23 -0400 Subject: [PATCH 1/4] Add all-in-database function --- ...MaterializedViewsInDatbaseConcurrently.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 RefreshAllMaterializedViewsInDatbaseConcurrently.sql diff --git a/RefreshAllMaterializedViewsInDatbaseConcurrently.sql b/RefreshAllMaterializedViewsInDatbaseConcurrently.sql new file mode 100644 index 0000000..25fd228 --- /dev/null +++ b/RefreshAllMaterializedViewsInDatbaseConcurrently.sql @@ -0,0 +1,20 @@ +CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabaseConcurrently() +RETURNS INT AS $$ + DECLARE + sch VARCHAR; + r RECORD; + BEGIN + RAISE NOTICE 'Refreshing all materialized views...'; + FOR sch IN SELECT schema_name FROM information_schema.schemata + LOOP + RAISE NOTICE 'Refreshing materialized view in schema %', sch; + FOR r IN SELECT matviewname FROM pg_matviews WHERE schemaname = sch + LOOP + RAISE NOTICE 'Refreshing %.%', sch, r.matviewname; + EXECUTE 'REFRESH MATERIALIZED VIEW CONCURRENTLY ' || sch || '.' || r.matviewname; + END LOOP; + END LOOP; + + RETURN 1; + END +$$ LANGUAGE plpgsql; From 48ed1d5d0b53dbae61cbd8dcb4fa09498d34d999 Mon Sep 17 00:00:00 2001 From: Jeff Casavant Date: Thu, 7 May 2015 14:29:26 -0400 Subject: [PATCH 2/4] Final --- RefreshAllMaterializedViewsInDatabase.sql | 20 +++++++++++++++++++ ...aterializedViewsInDatabaseConcurrently.sql | 0 2 files changed, 20 insertions(+) create mode 100644 RefreshAllMaterializedViewsInDatabase.sql rename RefreshAllMaterializedViewsInDatbaseConcurrently.sql => RefreshAllMaterializedViewsInDatabaseConcurrently.sql (100%) diff --git a/RefreshAllMaterializedViewsInDatabase.sql b/RefreshAllMaterializedViewsInDatabase.sql new file mode 100644 index 0000000..cbbf993 --- /dev/null +++ b/RefreshAllMaterializedViewsInDatabase.sql @@ -0,0 +1,20 @@ +CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabaseConcurrently() +RETURNS INT AS $$ + DECLARE + sch VARCHAR; + r RECORD; + BEGIN + RAISE NOTICE 'Refreshing all materialized views...'; + FOR sch IN SELECT schema_name FROM information_schema.schemata + LOOP + RAISE NOTICE 'Refreshing materialized view in schema %', sch; + FOR r IN SELECT matviewname FROM pg_matviews WHERE schemaname = sch + LOOP + RAISE NOTICE 'Refreshing %.%', sch, r.matviewname; + EXECUTE 'REFRESH MATERIALIZED VIEW ' || sch || '.' || r.matviewname; + END LOOP; + END LOOP; + + RETURN 1; + END +$$ LANGUAGE plpgsql; diff --git a/RefreshAllMaterializedViewsInDatbaseConcurrently.sql b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql similarity index 100% rename from RefreshAllMaterializedViewsInDatbaseConcurrently.sql rename to RefreshAllMaterializedViewsInDatabaseConcurrently.sql From c70952294788efdf72b5bc3cd566434e1475eac5 Mon Sep 17 00:00:00 2001 From: Jeff Casavant Date: Thu, 7 May 2015 14:36:11 -0400 Subject: [PATCH 3/4] Simplify function --- RefreshAllMaterializedViewsInDatabase.sql | 16 +++++----------- ...llMaterializedViewsInDatabaseConcurrently.sql | 16 +++++----------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/RefreshAllMaterializedViewsInDatabase.sql b/RefreshAllMaterializedViewsInDatabase.sql index cbbf993..6b190e4 100644 --- a/RefreshAllMaterializedViewsInDatabase.sql +++ b/RefreshAllMaterializedViewsInDatabase.sql @@ -1,18 +1,12 @@ -CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabaseConcurrently() +CREATE OR REPLACE FUNCTION RefreshMatviewsConcurrently() RETURNS INT AS $$ DECLARE - sch VARCHAR; - r RECORD; + matview VARCHAR; BEGIN - RAISE NOTICE 'Refreshing all materialized views...'; - FOR sch IN SELECT schema_name FROM information_schema.schemata + FOR matview IN SELECT schemaname || '.' || matviewname FROM pg_matviews LOOP - RAISE NOTICE 'Refreshing materialized view in schema %', sch; - FOR r IN SELECT matviewname FROM pg_matviews WHERE schemaname = sch - LOOP - RAISE NOTICE 'Refreshing %.%', sch, r.matviewname; - EXECUTE 'REFRESH MATERIALIZED VIEW ' || sch || '.' || r.matviewname; - END LOOP; + RAISE NOTICE 'Refreshing %', matview; + EXECUTE 'REFRESH MATERIALIZED VIEW ' || matview; END LOOP; RETURN 1; diff --git a/RefreshAllMaterializedViewsInDatabaseConcurrently.sql b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql index 25fd228..45ba7a5 100644 --- a/RefreshAllMaterializedViewsInDatabaseConcurrently.sql +++ b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql @@ -1,18 +1,12 @@ -CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabaseConcurrently() +CREATE OR REPLACE FUNCTION RefreshMatviewsConcurrently() RETURNS INT AS $$ DECLARE - sch VARCHAR; - r RECORD; + matview VARCHAR; BEGIN - RAISE NOTICE 'Refreshing all materialized views...'; - FOR sch IN SELECT schema_name FROM information_schema.schemata + FOR matview IN SELECT schemaname || '.' || matviewname FROM pg_matviews LOOP - RAISE NOTICE 'Refreshing materialized view in schema %', sch; - FOR r IN SELECT matviewname FROM pg_matviews WHERE schemaname = sch - LOOP - RAISE NOTICE 'Refreshing %.%', sch, r.matviewname; - EXECUTE 'REFRESH MATERIALIZED VIEW CONCURRENTLY ' || sch || '.' || r.matviewname; - END LOOP; + RAISE NOTICE 'Refreshing %', matview; + EXECUTE 'REFRESH MATERIALIZED VIEW CONCURRENTLY ' || matview; END LOOP; RETURN 1; From 32eb2f3912ae536d84fa7d33f1b23650ac177672 Mon Sep 17 00:00:00 2001 From: Jeff Casavant Date: Thu, 7 May 2015 14:37:08 -0400 Subject: [PATCH 4/4] Match style of original --- RefreshAllMaterializedViewsInDatabase.sql | 2 +- RefreshAllMaterializedViewsInDatabaseConcurrently.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RefreshAllMaterializedViewsInDatabase.sql b/RefreshAllMaterializedViewsInDatabase.sql index 6b190e4..cf8e4b6 100644 --- a/RefreshAllMaterializedViewsInDatabase.sql +++ b/RefreshAllMaterializedViewsInDatabase.sql @@ -1,4 +1,4 @@ -CREATE OR REPLACE FUNCTION RefreshMatviewsConcurrently() +CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabase() RETURNS INT AS $$ DECLARE matview VARCHAR; diff --git a/RefreshAllMaterializedViewsInDatabaseConcurrently.sql b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql index 45ba7a5..854656b 100644 --- a/RefreshAllMaterializedViewsInDatabaseConcurrently.sql +++ b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql @@ -1,4 +1,4 @@ -CREATE OR REPLACE FUNCTION RefreshMatviewsConcurrently() +CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabaseConcurrently() RETURNS INT AS $$ DECLARE matview VARCHAR;