diff --git a/RefreshAllMaterializedViewsInDatabase.sql b/RefreshAllMaterializedViewsInDatabase.sql new file mode 100644 index 0000000..cf8e4b6 --- /dev/null +++ b/RefreshAllMaterializedViewsInDatabase.sql @@ -0,0 +1,14 @@ +CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabase() +RETURNS INT AS $$ + DECLARE + matview VARCHAR; + BEGIN + FOR matview IN SELECT schemaname || '.' || matviewname FROM pg_matviews + LOOP + RAISE NOTICE 'Refreshing %', matview; + EXECUTE 'REFRESH MATERIALIZED VIEW ' || matview; + END LOOP; + + RETURN 1; + END +$$ LANGUAGE plpgsql; diff --git a/RefreshAllMaterializedViewsInDatabaseConcurrently.sql b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql new file mode 100644 index 0000000..854656b --- /dev/null +++ b/RefreshAllMaterializedViewsInDatabaseConcurrently.sql @@ -0,0 +1,14 @@ +CREATE OR REPLACE FUNCTION RefreshAllMaterializedViewsInDatabaseConcurrently() +RETURNS INT AS $$ + DECLARE + matview VARCHAR; + BEGIN + FOR matview IN SELECT schemaname || '.' || matviewname FROM pg_matviews + LOOP + RAISE NOTICE 'Refreshing %', matview; + EXECUTE 'REFRESH MATERIALIZED VIEW CONCURRENTLY ' || matview; + END LOOP; + + RETURN 1; + END +$$ LANGUAGE plpgsql;