diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 911f171d812..7d5051406a2 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -3355,3 +3355,31 @@ CREATE FOREIGN TABLE inv_fsz (c1 int )
 -- Invalid batch_size option
 CREATE FOREIGN TABLE inv_bsz (c1 int )
 	SERVER loopback OPTIONS (batch_size '100$%$#$#');
+
+CREATE TABLE test (i int, j int);
+CREATE TABLE test_base (i int, j int);
+INSERT INTO test VALUES (1,2),(3,4);
+INSERT INTO test_base VALUES (1,2),(3,4);
+CREATE FOREIGN TABLE test_remote (i int, j int)
+       SERVER loopback OPTIONS (table_name 'test_base');
+CREATE FUNCTION update_test()
+RETURNS trigger
+ LANGUAGE plpgsql
+AS $function$
+DECLARE
+  rec record;
+  tname text;
+BEGIN
+  IF (TG_OP = 'DELETE') THEN
+  -- reference to new instead of old
+    DELETE FROM test_remote WHERE row(i,j)=row(new.i,new.j);
+  ELSIF (TG_OP = 'INSERT') THEN
+    INSERT INTO test_remote VALUES(new.i, new.j);
+  ELSIF (TG_OP = 'UPDATE') THEN
+    UPDATE test_remote SET i=new.i, j=new.i WHERE i=old.i AND j=old.j;
+  END IF;
+  RETURN NULL;
+  END;
+$function$;
+CREATE TRIGGER tg_upd AFTER INSERT OR DELETE OR UPDATE ON public.test FOR EACH ROW EXECUTE FUNCTION update_test();
+DELETE FROM test WHERE i=1;
