MYSQL_FDW trigger BEFORE UPDATE changes to NEW on a col not in theupdate statement don't go through - Mailing list pgsql-hackers

From Francois Payette
Subject MYSQL_FDW trigger BEFORE UPDATE changes to NEW on a col not in theupdate statement don't go through
Date
Msg-id A38DD5ED-0DD3-4CCA-9A64-08CE10675344@netmosphere.net
Whole thread Raw
Responses Re: MYSQL_FDW trigger BEFORE UPDATE changes to NEW on a col not inthe update statement don't go through  (Etsuro Fujita <etsuro.fujita@gmail.com>)
List pgsql-hackers

Hi All,
 I was pleasantly surprised to see that triggers can be created on FDW tables. I'm running into a problem.

I create a trigger on an imported foreign table. In the procedure, I change the value of a column that is not in the triggering update statement. This change does not make it to the mysql side.

CREATE OR REPLACE FUNCTION aatrigger_up() returns trigger
AS $$
DECLARE
BEGINIF NOT(row_to_json(NEW)->'pgrti' is NULL) THEN	NEW.pgrti = 2000000000*random();END IF;       RAISE NOTICE 'aarigger_up %', row_to_json(NEW)::text; return NEW;

END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER aarigger_up BEFORE UPDATE ON mysql.users FOR EACH ROW EXECUTE PROCEDURE aarigger_up();
update mysql.users set email = 'admin@example.com' where id = 1;	

I can see that the value for pgrti is updated in the NOTICE in postgres. In mysql the value is not updated. If I add the target col to the statement it does go through

update mysql.users set email = 'admin@example.com', pgrti=0 where id = 1;	

 I need this to work to be able to detect CRUD coming from PG in a little deamon that calls pg_triggers for updates coming from mysqld; without a means to detect changes originating from pg the triggers would fire twice. Any idea where I'd change MYSQL_FDW to do this (also add fields that are updated in the trigger before firing off to mysql)?

mysql_deparse_update

That the actual update statement is used to generate the mapping, so any col referred to in triggers would be ignored…


TIA, stay safe!
Francois Payette

pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: DETACH PARTITION and FOR EACH ROW triggers on partitioned tables
Next
From: Michael Paquier
Date:
Subject: Re: forgotten initalization of a variable