no exceptions raises when DATABASE-level trigger on transaction ROLLBACK fails ------------------------------------------------------------------------------
Key: CORE-3712 URL: http://tracker.firebirdsql.org/browse/CORE-3712 Project: Firebird Core Issue Type: Bug Reporter: Pavel Zotov Consider the following script that is store in file 'TEST.SQL': recreate table tmp(id int, s01 varchar(20)); commit; set term ^; create or alter trigger t_rollback active on transaction rollback as declare v int; begin v = (select 1/0 from rdb$database); end^ create or alter trigger t_commit active on transaction commit as declare v int; begin if (exists(select * from tmp)) then v = (select 1/0 from rdb$database); end^ set term ;^ commit; Then create a new database, make connect and run two cases. CASE #1. ------------ C:\1INSTALL\FIREBIRD\Data>isql TR.FDB Database: TR.FDB SQL> in TEST.SQL; SQL> insert into tmp values(1,'aaa'); SQL> commit; Statement failed, SQLSTATE = 22012 arithmetic exception, numeric overflow, or string truncation -Integer divide by zero. The code attempted to divide an integer value by an integer divisor of zero. -At trigger 'T_COMMIT' line: 6, col: 34 CASE #2. ------------- C:\1INSTALL\FIREBIRD\Data>isql TR.FDB Database: TR.FDB SQL> in tb0; SQL> insert into tmp values(1,'aaa'); SQL> rollback; SQL> -- no messages about zero division -- ------------------------------------------------------------------------------------------------------------------------- PS. The trigger T_COMMIT was actually fired because in trace we can see for CASE #2: 2011-12-29T01:02:47.5460 (468:021EDEE0) EXECUTE_STATEMENT_FINISH C:\1INSTALL\FIREBIRD\DATA\TR.FDB (ATT_5, SYSDBA:NONE, NONE, XNET:BALAHA) C:\1INSTALL\FIREBIRD\FB_2_5\bin\isql.exe:1584 (TRA_100, CONCURRENCY | WAIT | READ_WRITE) Statement 360: ------------------------------------------------------------------------------- insert into tmp values(1,'aaa') 0 records fetched 0 ms, 2 write(s), 7 fetch(es), 6 mark(s) Table Natural Index Update Insert Delete Backout Purge Expunge *************************************************************************************************************** TMP 1 2011-12-29T01:02:50.8750 (468:021EDEE0) EXECUTE_TRIGGER_START C:\1INSTALL\FIREBIRD\DATA\TR.FDB (ATT_5, SYSDBA:NONE, NONE, XNET:BALAHA) C:\1INSTALL\FIREBIRD\FB_2_5\bin\isql.exe:1584 (TRA_100, CONCURRENCY | WAIT | READ_WRITE) T_ROLLBACK FOR MON$DATABASE (ON TRANSACTION_ROLLBACK) 2011-12-29T01:02:50.8750 (468:021EDEE0) FAILED EXECUTE_TRIGGER_FINISH C:\1INSTALL\FIREBIRD\DATA\TR.FDB (ATT_5, SYSDBA:NONE, NONE, XNET:BALAHA) C:\1INSTALL\FIREBIRD\FB_2_5\bin\isql.exe:1584 (TRA_100, CONCURRENCY | WAIT | READ_WRITE) T_ROLLBACK FOR MON$DATABASE (ON TRANSACTION_ROLLBACK) 0 ms, 1 fetch(es) 2011-12-29T01:02:50.8900 (468:021EDEE0) ROLLBACK_TRANSACTION C:\1INSTALL\FIREBIRD\DATA\TR.FDB (ATT_5, SYSDBA:NONE, NONE, XNET:BALAHA) C:\1INSTALL\FIREBIRD\FB_2_5\bin\isql.exe:1584 (TRA_100, CONCURRENCY | WAIT | READ_WRITE) 1 ms, 6 write(s), 13 fetch(es), 5 mark(s) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel