explain plans for foreign servers - Mailing list pgsql-hackers

From dinesh salve
Subject explain plans for foreign servers
Date
Msg-id CAP+B4TD=iy-C2EnsrJgjpwSc7_4pd3Xh-gFzA0bwsw3q8u860g@mail.gmail.com
Whole thread Raw
Responses Re: explain plans for foreign servers
List pgsql-hackers

Hi Hackers,

I am working on a feature in postgres_fdw extension to show plans used by remote postgresql servers in the output of the EXPLAIN command.
I think this will help end users understand query execution plans used by remote servers. Sample output for table people where people_1 is local partition and people_2 is remote partition would look like -

postgres:5432> explain select * from "test"."people";
QUERY PLAN
Append (cost=0.00..399.75 rows=2270 width=46)
    → Seq Scan on "people.people_1" people_1 (cost=0.00..21.00 rows=1100 width=46)
    → Foreign Scan on "people.people_2" people_2 (cost=100.00..367.40 rows=1170 width=46)
        Remote Plan
            Seq Scan on "people.people_2" (cost=0.00..21.00 rows=1100 width=46)
(5 rows)

I would like community inputs on below high level thoughts:

1. To enable this feature, either we can introduce a new option in EXPLAIN command e.g. (fetch_remote_plans true) or control this behaviour using a guc defined in postgres_fdw extension.      I am more inclined towards guc as this feature is for extension postgres_fdw. Adding the EXPLAIN command option might force other FDW extensions to handle this.

2. For ANALYZE = false, the idea is that postgres_fdw would create a connection to a remote server, prepare SQL to send over connection and store received plans in ExplainState.

3. For ANALYZE = true, idea is that postgres_fdw would set a new guc over connection to remote server, remote server postgres_fdw would read this guc and send back used query plan as a NOTICE (similar to auto_explain extension does) with custom header which postgres_fdw extension understands. . We also have an opportunity to introduce a new message type in the protocol to send back explain plans but it might look like too much work for this feature. Open to ideas here.

Dinesh Salve
SDE@AWS

pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: Commit Timestamp and LSN Inversion issue
Next
From: Andres Freund
Date:
Subject: Re: Add html-serve target to autotools and meson