mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-06 20:49:21 +02:00
Doc: Update PL/pgSQL sample function in plpgsql.sgml.
The example used to explain 'Looping Through Query Results' uses pseudo-materialized views. Replace it with a more up-to-date example which does the same thing with actual materialized views, which have been available since PostgreSQL 9.3. In the passing, change '%' as format specifier instead of '%s' as is used in other examples in plpgsql.sgml. Reported-by: Ian Barwick Author: Ian Barwick Reviewed-by: Amit Kapila Backpatch-through: 9.4 Discussion: https://postgr.es/m/9a70d393-7904-4918-c97c-649f6d114b6a@2ndquadrant.com
This commit is contained in:
parent
dc92bf5cad
commit
fef55c569e
@ -2437,19 +2437,29 @@ END LOOP <optional> <replaceable>label</replaceable> </optional>;
|
|||||||
resulting from the <replaceable>query</replaceable> and the loop body is
|
resulting from the <replaceable>query</replaceable> and the loop body is
|
||||||
executed for each row. Here is an example:
|
executed for each row. Here is an example:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
CREATE FUNCTION cs_refresh_mviews() RETURNS integer AS $$
|
CREATE FUNCTION refresh_mviews() RETURNS integer AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
mviews RECORD;
|
mviews RECORD;
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'Refreshing materialized views...';
|
RAISE NOTICE 'Refreshing all materialized views...';
|
||||||
|
|
||||||
FOR mviews IN SELECT * FROM cs_materialized_views ORDER BY sort_key LOOP
|
FOR mviews IN
|
||||||
|
SELECT n.nspname AS mv_schema,
|
||||||
|
c.relname AS mv_name,
|
||||||
|
pg_catalog.pg_get_userbyid(c.relowner) AS owner
|
||||||
|
FROM pg_catalog.pg_class c
|
||||||
|
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
|
||||||
|
WHERE c.relkind = 'm'
|
||||||
|
ORDER BY 1
|
||||||
|
LOOP
|
||||||
|
|
||||||
-- Now "mviews" has one record from cs_materialized_views
|
-- Now "mviews" has one record with information about the materialized view
|
||||||
|
|
||||||
RAISE NOTICE 'Refreshing materialized view %s ...', quote_ident(mviews.mv_name);
|
RAISE NOTICE 'Refreshing materialized view %.% (owner: %)...',
|
||||||
EXECUTE format('TRUNCATE TABLE %I', mviews.mv_name);
|
quote_ident(mviews.mv_schema),
|
||||||
EXECUTE format('INSERT INTO %I %s', mviews.mv_name, mviews.mv_query);
|
quote_ident(mviews.mv_name),
|
||||||
|
quote_ident(mviews.owner);
|
||||||
|
EXECUTE format('REFRESH MATERIALIZED VIEW %I.%I', mviews.mv_schema, mviews.mv_name);
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
|
||||||
RAISE NOTICE 'Done refreshing materialized views.';
|
RAISE NOTICE 'Done refreshing materialized views.';
|
||||||
|
Loading…
Reference in New Issue
Block a user