tursodatabase/turso
Foreign Key CASCADE Cycles Cause Stack Overflow
Closed
#5,154 opened on Feb 11, 2026
foreign keysgood first issuepanic
Repository metrics
- Stars
- (19,103 stars)
- PR merge metrics
- (Avg merge 2d 11h) (147 merged PRs in 30d)
Description
Description
Self-referential or circular foreign key CASCADE constraints cause stack overflow.
Reproducer
PRAGMA foreign_keys = ON;
CREATE TABLE T (
id INTEGER PRIMARY KEY,
parent_id INTEGER REFERENCES T(id) ON DELETE CASCADE
);
INSERT INTO T VALUES (1, NULL), (2, 1), (3, 2), (4, 3);
DELETE FROM T WHERE id = 1;
Crash Message
thread 'main' has overflowed its stack
fatal runtime error: stack overflow, aborting
Per SQLite documentation: "SQLite limits the depth of recursion of triggers in order to prevent a statement involving recursive triggers from using an unbounded amount of memory." The default MAX_TRIGGER_DEPTH is 1000. Turso has no depth limit.
core/translate/fkeys.rs:1444-1665 - Recursive subprograms without depth tracking.
This issue brought to you by Mikaël and Claude Code.