Re: Inquiry About Determining Parallel Plans for REFRESH MATERIALIZED VIEW - Mailing list pgsql-hackers

From jian he
Subject Re: Inquiry About Determining Parallel Plans for REFRESH MATERIALIZED VIEW
Date
Msg-id CACJufxHRaFXdBWOqRVbJAqHAh0eKTGLkOENFL6quAPgzi=pTQw@mail.gmail.com
Whole thread Raw
In response to Re: Inquiry About Determining Parallel Plans for REFRESH MATERIALIZED VIEW  (Zhang Mingli <zmlpostgres@gmail.com>)
List pgsql-hackers
On Thu, Jan 16, 2025 at 3:05 PM Zhang Mingli <zmlpostgres@gmail.com> wrote:
>
>
> Thank you for your help! That’s certainly a viable approach to logging the plan during the REFRESH operation.
> However, I want to clarify that we’re particularly interested in examining the SQL cases. When there are numerous
queriesthat may also include REFRESH, it can be challenging to sift through the logs and identify the specific query we
wantto analyze using SQL. 
>
> Ideally, it would be beneficial if we could obtain an explanation of the SQL associated with a REFRESH command,
allowingus to see the SELECT plan without having to execute the REFRESH itself. 
> We could limit EXPLAIN utility command to only REFRESH , on the AS SELECT part, similar to how we can with CREATE
TABLEAS, is it possible and worthwhile? 

you can use pg_get_viewdef to get the matview definition then use it
in the plpgsql function.

create function explain_query_json(query_sql text)
returns table (explain_line json)
language plpgsql as
$$
begin
  return query execute 'EXPLAIN (FORMAT json) ' || query_sql;
end;
$$;



pgsql-hackers by date:

Previous
From: Alena Rybakina
Date:
Subject: Re: Eagerly scan all-visible pages to amortize aggressive vacuum
Next
From: Peter Eisentraut
Date:
Subject: Re: Fix misuse use of pg_b64_encode function (contrib/postgres_fdw/connection.c)