Subject: Re: Logging queries executed by SPI_execute

From: Marcelo Fernandes <[email-masked]>
Date: Tue, 4 Feb 2025 17:08:48 +1300

On Mon, Feb 3, 2025 at 6:46 PM Pavel Stehule <[email-masked]> wrote:
> The queries executed by SPI are never executed on the top level. These queries are marked as nested.
>
> So you need to use auto_explain https://www.postgresql.org/docs/current/auto-explain.html with active auto_explain.log_nested_statements

Thanks Pavel, I have tried that but however couldn't succeed.

I have added this to my postgres.conf file:

    session_preload_libraries = 'auto_explain'
    auto_explain.log_nested_statements = true

After running pg_repack, which calls SPI_execute* functions, I can't really see
those functions being propagated to the logs.

I have a workaround in place, which is to add elog calls such as

    elog(LOG, "...")

to capture the queries. But of course, ideally a postgres.conf setting would be
more handy.

Best,
Marcelo

---

From: Pavel Stehule <[email-masked]>
Date: Tue, 4 Feb 2025 06:06:55 +0100

út 4. 2. 2025 v 5:09 odesílatel Marcelo Fernandes <[email-masked]>
napsal:

> > So you need to use auto_explain
> https://www.postgresql.org/docs/current/auto-explain.html with active
> auto_explain.log_nested_statements
>

you are missing setting  auto_explain.log_min_duration