You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Output: NULL::integer, 1001, 101, 'foo'::text, NULL::timestamp with time zone, NULL::timestamp without time zone, NULL::character varying, 'ft1 '::character(10), NULL::user_enum
874
+
(4 rows)
875
+
876
+
ALTER TABLE "S 1"."T 1" RENAME TO "T 0";
877
+
ALTER FOREIGN TABLE ft1 OPTIONS (SET table_name 'T 0');
Output: NULL::integer, 1001, 101, 'foo'::text, NULL::timestamp with time zone, NULL::timestamp without time zone, NULL::character varying, 'ft1 '::character(10), NULL::user_enum
907
+
(4 rows)
908
+
909
+
ALTER TABLE "S 1"."T 0" RENAME TO "T 1";
910
+
ALTER FOREIGN TABLE ft1 OPTIONS (SET table_name 'T 1');
856
911
-- cleanup
857
912
DEALLOCATE st1;
858
913
DEALLOCATE st2;
859
914
DEALLOCATE st3;
860
915
DEALLOCATE st4;
861
916
DEALLOCATE st5;
917
+
DEALLOCATE st6;
918
+
DEALLOCATE st7;
862
919
-- System columns, except ctid, should not be sent to remote
863
920
EXPLAIN (VERBOSE, COSTS false)
864
921
SELECT * FROM ft1 t1 WHERE t1.tableoid = 'pg_class'::regclass LIMIT 1;
0 commit comments