diff --git a/server/src-lib/Hasura/RQL/DDL/Subscribe.hs b/server/src-lib/Hasura/RQL/DDL/Subscribe.hs index c4555ae5209f9..3df8bb97b8510 100644 --- a/server/src-lib/Hasura/RQL/DDL/Subscribe.hs +++ b/server/src-lib/Hasura/RQL/DDL/Subscribe.hs @@ -131,6 +131,11 @@ mkTriggerQ trid trn qt allCols (TriggerOpsDef insert update delete) = do Just sql -> Q.multiQE defaultTxErrorHandler (Q.fromText sql) Nothing -> throw500 "no trigger sql generated" +delTriggerQ :: TriggerName -> Q.TxE QErr () +delTriggerQ trn = mapM_ (\op -> Q.unitQE + defaultTxErrorHandler + (Q.fromText $ getDropFuncSql op trn) () False) [INSERT, UPDATE, DELETE] + addEventTriggerToCatalog :: QualifiedTable -> [PGColInfo] @@ -161,10 +166,7 @@ delEventTriggerFromCatalog trn = do hdb_catalog.event_triggers WHERE name = $1 |] (Identity trn) True - mapM_ tx [INSERT, UPDATE, DELETE] - where - tx :: Ops -> Q.TxE QErr () - tx op = Q.multiQE defaultTxErrorHandler (Q.fromText $ getDropFuncSql op trn) + delTriggerQ trn updateEventTriggerToCatalog :: QualifiedTable @@ -181,6 +183,7 @@ updateEventTriggerToCatalog qt allCols etc = do RETURNING id |] (Q.AltJ $ toJSON etc, name) True trid <- getTrid ids + delTriggerQ name mkTriggerQ trid name qt allCols opsdef return trid where diff --git a/server/tests-py/queries/event_triggers/update_query/update-setup.yaml b/server/tests-py/queries/event_triggers/update_query/update-setup.yaml index 17998b36ebfaf..19b7a0b6707fa 100644 --- a/server/tests-py/queries/event_triggers/update_query/update-setup.yaml +++ b/server/tests-py/queries/event_triggers/update_query/update-setup.yaml @@ -6,8 +6,6 @@ args: table: schema: hge_tests name: test_t1 - insert: - columns: ["c1"] update: columns: ["c1"] delete: diff --git a/server/tests-py/test_events.py b/server/tests-py/test_events.py index 367c535a5be31..bba82bb6704a4 100755 --- a/server/tests-py/test_events.py +++ b/server/tests-py/test_events.py @@ -178,7 +178,8 @@ def test_update_basic(self, hge_ctx): headers = {} st_code, resp = insert(hge_ctx, table, init_row) assert st_code == 200, resp - check_event(hge_ctx, "t1_cols", table, "INSERT", exp_ev_data, headers, "/new") + with pytest.raises(queue.Empty): + check_event(hge_ctx, "t1_cols", table, "INSERT", exp_ev_data, headers, "/new") where_exp = {"c1": 1} set_exp = {"c2": "world"}