Commit a9f82ca
committed
Guard case/parenthesis alignment against malformed input
reindent_aligned=True and strip_whitespace=True could both crash on
certain malformed SQL where grouping doesn't produce the shape these
filters expect.
For CASE without a matching END as a direct child (it can end up nested
inside a sibling group instead), _process_case would grab a None token
and hand it to insert_before, which blew up with ValueError: None is
not in list.
For a parenthesis whose contents collapse into a single nested group
during parsing (e.g. "( AS )"), _stripws_parenthesis assumed at least
two direct children and raised IndexError on tokens[1].
Both filters now bail out gracefully instead of assuming a well-formed
tree, with regression tests for each case using the exact reproducers
from the two issues.1 parent 60cdc64 commit a9f82ca
3 files changed
Lines changed: 29 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
73 | 79 | | |
74 | 80 | | |
75 | 81 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
116 | 120 | | |
117 | | - | |
| 121 | + | |
118 | 122 | | |
119 | | - | |
| 123 | + | |
120 | 124 | | |
121 | 125 | | |
122 | 126 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
516 | 516 | | |
517 | 517 | | |
518 | 518 | | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
0 commit comments