]> granicus.if.org Git - postgresql/commit
Invalidate cached plans on FDW option changes.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 6 Jan 2017 19:12:52 +0000 (14:12 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 6 Jan 2017 19:12:52 +0000 (14:12 -0500)
commitc52d37c8b3674f1ca9ead297480ade0ac9c54174
tree410b2443503d3f8ed6d4f933927b0dd89541d46e
parent0355e6f3107a5be9b5f0873f08527bad361d9d8f
Invalidate cached plans on FDW option changes.

This fixes problems where a plan must change but fails to do so,
as seen in a bug report from Rajkumar Raghuwanshi.

For ALTER FOREIGN TABLE OPTIONS, do this through the standard method of
forcing a relcache flush on the table.  For ALTER FOREIGN DATA WRAPPER
and ALTER SERVER, just flush the whole plan cache on any change in
pg_foreign_data_wrapper or pg_foreign_server.  That matches the way
we handle some other low-probability cases such as opclass changes, and
it's unclear that the case arises often enough to be worth working harder.
Besides, that gives a patch that is simple enough to back-patch with
confidence.

Back-patch to 9.3.  In principle we could apply the code change to 9.2 as
well, but (a) we lack postgres_fdw to test it with, (b) it's doubtful that
anyone is doing anything exciting enough with FDWs that far back to need
this desperately, and (c) the patch doesn't apply cleanly.

Patch originally by Amit Langote, reviewed by Etsuro Fujita and Ashutosh
Bapat, who each contributed substantial changes as well.

Discussion: https://postgr.es/m/CAKcux6m5cA6rRPTKkqVdJ-R=KKDfe35Q_ZuUqxDSV_4hwga=og@mail.gmail.com
contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/sql/postgres_fdw.sql
src/backend/commands/tablecmds.c
src/backend/utils/cache/plancache.c