postgres_fdw fails to see that array type belongs to extension - Mailing list pgsql-hackers

From David Geier
Subject postgres_fdw fails to see that array type belongs to extension
Date
Msg-id 4a847c55-489f-4e8d-a664-fc6b1cbe306f@gmail.com
Whole thread Raw
Responses Re: postgres_fdw fails to see that array type belongs to extension
List pgsql-hackers
Hi hackers,

We use postgres_fdw to connect two databases. Both DBs have an extension 
installed which provides a custom string data type. Our extension is 
known to the FDW as we created the foreign server with our extension 
listed in the "extensions" option.

The filter clause of the query SELECT * FROM test WHERE col = 'foo' OR 
col = 'bar' is pushed down to the remote, while the filter clause of the 
semantically equivalent query SELECT * FROM test WHERE col IN ('foo', 
'bar') is not.

I traced this down to getExtensionOfObject() called from 
lookup_shippable(). getExtensionOfObject() doesn't recurse but only 
checks first level dependencies and only checks for extension 
dependencies. However, the IN operator takes an array of our custom data 
type as argument (type is typically prefixed with _ in pg_type). This 
array type is only dependent on our extension via the custom data type 
in two steps which postgres_fdw doesn't see. Therefore, postgres_fdw 
doesn't allow for push-down of the IN.

Thoughts?

-- 
David Geier
(ServiceNow)




pgsql-hackers by date:

Previous
From: Melanie Plageman
Date:
Subject: Re: Emit fewer vacuum records by reaping removable tuples during pruning
Next
From: jian he
Date:
Subject: add function argument names to regex* functions.