From Gilles Darold <gil...@darold.net> on 2020-03-26T16:09:04. > Actually the callback function is called when the error is thrown:
> psql:eat_rollback2.sql:20: INFO: 00000: myTransactionCallback() XactEvent 2 > (is abort) level 1 <----------------- > LOCATION: myTransactionCallback, eat_rollback.c:52 > psql:eat_rollback2.sql:20: ERROR: XX000: no no no > LOCATION: mySubtransactionCallback, eat_rollback.c:65 > this is probably why the callback is not called on the subsequent ROLLBACK > execution because abort processing is > already done (src/backend/access/transam/xact.c:3890). So I withdraw this patch and fix. The callback during the error will drive the ROLLBACK remote, as required in the fdw. Great catch, thanks Gilles! Cheers, Dave