fdw: foreign partition and aggregate function

From: Jérémy Lal <kapouer(at)melix(dot)org>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: fdw: foreign partition and aggregate function
Date: 2026-05-09 09:48:13
Message-ID: CAJxTCxyUtQuESS+Nk3+HRwjirZrs9A6Ypis=XfPcVV0=siJ0Qg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

Using PostgreSQL on Debian 18.3-1.pgdg13+1

I've setup a partitioned table, with local and foreign partitions like this
Clé de partition : LIST (part_id)
Partitions: foreign_parts_s1.mytable_1 FOR VALUES IN (1), FOREIGN,
parts_s10.mytable_10 FOR VALUES IN (10), PARTITIONED,

and ran ANALYZE mytable;

Now when I query directly the foreign table, the plan is what I expect
SELECT count(*) FROM foreign_parts_s1.mytable_1 WHERE part_id = 1;
Foreign Scan
Output: (count(*))
Relations: Aggregate on (foreign_parts_s1.mytable_1)
Remote SQL: SELECT count(*) FROM parts_s1.mytable_1

and is somewhat as fast as the same query on the remote server.

However, when I query the parent table, the aggregate is not pushed down:
SELECT count(*) FROM mytable WHERE part_id = 1;
Aggregate
Output: count(*)
-> Foreign Scan on foreign_parts_s1.mytable_1 mytable
Remote SQL: SELECT NULL FROM parts_s1.mytable_1 WHERE ((part_id = 1))

and it reads all the rows, so it's not a viable query.

I tried with various parameters like
enable_partitionwise_aggregate
enable_partitionwise_join
also use_remote_estimate on the server options.

Is it the expected behavior ? Did I miss something ?

Jérémy

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ron Johnson 2026-05-10 02:51:15 Re: fdw: foreign partition and aggregate function
Previous Message Igor Korot 2026-05-08 18:12:16 Re: Problem linking with Release library