Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan. - Mailing list pgsql-hackers

From Amit Langote
Subject Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan.
Date
Msg-id 57034C24.1000203@lab.ntt.co.jp
Whole thread Raw
In response to Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan.  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan.  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan.  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan.  (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>)
List pgsql-hackers
On 2016/04/05 0:23, Tom Lane wrote:
> Amit Langote <amitlangote09@gmail.com> writes:
>> On Mon, Apr 4, 2016 at 11:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> A related issue, now that I've seen this example, is that altering
>>> FDW-level or server-level options won't cause a replan either.  I'm
>>> not sure there's any very good fix for that.  Surely we don't want
>>> to try to identify all tables belonging to the FDW or server and
>>> issue relcache invals on all of them.
>
>> Hm, some kind of PlanInvalItem-based solution could work maybe?
>
> Hm, so we'd expect that whenever an FDW consulted the options while
> making a plan, it'd have to record a plan dependency on them?  That
> would be a clean fix maybe, but I'm worried that third-party FDWs
> would fail to get the word about needing to do this.

I would imagine that that level of granularity may be a little too much; I
mean tracking dependencies at the level of individual FDW/foreign
table/foreign server options.  I think it should really be possible to do
the entire thing in core instead of requiring this to be made a concern of
FDW authors.  How about the attached that teaches
extract_query_dependencies() to add a foreign table and associated foreign
data wrapper and foreign server to invalItems.  Also, it adds plan cache
callbacks for respective caches.

One thing that I observed that may not be all that surprising is that we
may need a similar mechanism for postgres_fdw's connection cache, which
doesn't drop connections using older server connection info after I alter
them.  I was trying to test my patch by altering dbaname option of a
foreign server but that was silly, ;).  Although, I did confirm that the
patch works by altering use_remote_estimates server option. I could not
really test for FDW options though.

Thoughts?

Thanks,
Amit

Attachment

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: oversight in parallel aggregate
Next
From: Michael Paquier
Date:
Subject: Re: [PATCH v12] GSSAPI encryption support