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;
$$;