Using the command line tools from the website
3.6.18 reports the error correctly;

SQLite version 3.6.18
sqlite> PRAGMA recursive_triggers = on;
sqlite> CREATE TABLE t5 (a primary key, b, c);
sqlite> INSERT INTO t5 values (1, 2, 3);
sqlite> CREATE TRIGGER au_tbl AFTER UPDATE ON t5 BEGIN UPDATE OR IGNORE
t5 SET a = new.a, c = 10;   END;
sqlite> UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1 ;
SQL error: too many levels of trigger recursion


3.6.21 does not handle it properly

SQLite version 3.6.21
sqlite> PRAGMA recursive_triggers = on;
sqlite> CREATE TABLE t5 (a primary key, b, c);
sqlite> INSERT INTO t5 values (1, 2, 3);
sqlite> CREATE TRIGGER au_tbl AFTER UPDATE ON t5 BEGIN UPDATE OR IGNORE
t5 SET a = new.a, c = 10;   END;
sqlite> UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1 ;
Error: SQL logic error or missing database



BACKGROUND:
I was trying to get the test triggerC-1.11 in triggerC.test to work
correctly; 
The assert in btree.c at line 3699 in the routine sqlite3BtreeRollback
was 
failing returning a 2000, rather than 0

assert( countWriteCursors(pBt)==0 );


Regards,

Noah Hart



CONFIDENTIALITY NOTICE: 
This message may contain confidential and/or privileged information. If you are 
not the addressee or authorized to receive this for the addressee, you must not 
use, copy, disclose, or take any action based on this message or any 
information herein. If you have received this message in error, please advise 
the sender immediately by reply e-mail and delete this message. Thank you for 
your cooperation.


_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to