tursodatabase/turso

Foreign Key CASCADE Cycles Cause Stack Overflow

Open

#5,154 创建于 2026年2月11日

在 GitHub 查看
 (7 评论) (1 反应) (0 负责人)Rust (1,001 fork)github user discovery
foreign keysgood first issuepanic

仓库指标

Star
 (19,103 star)
PR 合并指标
 (PR 指标待抓取)

描述

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.

贡献者指南