Repository navigation
Commit fd1de1d
committed
fix: drop JSONExtract chains iteratively
The Databricks parser builds a v:a:a:… path in a loop, one JSONExtract per
link, each holding the previous one as its input. JSONExtract was missing
from the iterative drop list, so freeing a long path recursed once per link:
on a 2 MiB thread, SELECT v:a:a:… FROM t aborted with a stack overflow from
about 20,000 links in debug and 50,000 in release, including after the parser
had refused the tree for depth.
JSONExtract now frees its descendants with the worklist, like JsonExtractFunc
and the other loop-built nodes, and the 100,000-step drop test covers it.1 parent a9dde6a commit fd1de1d
2 files changed
Lines changed: 22 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| 66 | + | |
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
424 | 425 | | |
425 | 426 | | |
426 | 427 | | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
427 | 446 | | |
428 | 447 | | |
429 | 448 | | |
| |||
0 commit comments