Re: postgres_fdw : altering foreign table not invalidating prepare statement execution plan.
Amit Langote <langote_amit_f8@lab.ntt.co.jp>
From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Tom Lane <tgl@sss.pgh.pa.us>, Amit Langote <amitlangote09@gmail.com>
Cc: Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2016-04-05T05:24:52Z
Lists: pgsql-hackers
Attachments
- fdw-plancache-inval-1.patch (text/x-diff) patch
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
Commits
-
Invalidate cached plans on FDW option changes.
- e4380e4cf68a 9.4.11 landed
- c52d37c8b367 10.0 landed
- aaf12e577ee9 9.5.6 landed
- a8191800a6e6 9.3.16 landed
- 4103a2f200d6 9.6.2 landed