Hi, please ignore my last email about the patch. :/
I have determined that pushdown of custom data types through fdw in fact does make sense.
Consider this query:
SELECT * FROM customers WHERE <user_defined_type_col> <user_defined_operator> <user_defined_function>;
To push down the WHERE clause to the foreign servers, both local and foreign server must have the user_defined database objects (else the query won't work on the foreign servers).
For built-in types, operators, functions, Postgres knows that pushdown is safe as the foreign servers the db objects. But for the user_defined db objects, postgres won't know. Hence, user_defined_type_col needs to be pushed down explicitly.
On Tue, Apr 9, 2024 at 8:06 PM Rajan Pandey <rajanpandey2508@xxxxxxxxx> wrote:
Hi team 😃.In the https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPTIONS-REMOTE-EXECUTION doc, it mentions that Immutable Functions and Hi can be pushed down using `extensions` option for foreign server.But it does not mention TYPE. In the shippable.c/lookup_shippable() function, I found a comment that indicates that type is also pushed down. Hece, I have removed TYPE from the comments, assuming that it does not make sense to push down a data type, and only functions and operations can be pushed down. Please let me know if my assumption is incorrect. 🙂I have added my patch file with the mail. Thanks!On Tue, Apr 9, 2024 at 4:06 PM Laurenz Albe <laurenz.albe@xxxxxxxxxxx> wrote:On Tue, 2024-04-09 at 15:49 +0530, Rajan Pandey wrote:
> I was reading https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPTIONS-REMOTE-EXECUTION
> and found that it mentions that Immutable Functions and Operators can
> be pushed down using `extensions` option for foreign server.
>
> But it does not mention about TYPE. In the shippable.c/lookup_shippable()
> function, I found that type is also pushed down.
The comment only says that data types may be shippable, but not that
they are actually shipped. Can you think of a case where a data type
would be shipped to a foreign server? I wrote a foreign data wrapper,
and I cannot think of such a case.
Perhaps the function comment should be adjusted by removing the parenthesis
or changing it to "(operator/function/...)".
> Does this require updating the docs? Can I raise a PR to do so? Thank you! :)
You would send a patch against the "master" branch to the pgsql-docs list for that.
Yours,
Laurenz Albe
--RegardsRajan Pandey
Regards
Rajan Pandey