Commit 4e2c3ac
committed
Collect multiple optimizer hints per statement and extract comment prefix
Two orthogonal improvements to optimizer hint parsing:
1. `Option<OptimizerHint>` -> `Vec<OptimizerHint>`: the old Option silently
dropped all but the first hint-style comment. Vec preserves all hint
comments the parser encounters, letting consumers decide which to use.
This is backwards compatible: `optimizer_hint: None` becomes
`optimizer_hints: vec![]`, and `optimizer_hint.unwrap()` becomes
`optimizer_hints[0]`.
2. Generic prefix extraction: the `/*+...*/` pattern is an established
convention. Various systems extend it with `/*prefix+...*/` where the
prefix is opaque alphanumeric text before `+`. Rather than adding a new
dialect flag or struct for each system, the parser now captures any
`[a-zA-Z0-9]*` run before `+` as a `prefix` field. Standard hints have
`prefix: ""`. No new dialect surface -- same `supports_comment_optimizer_hint()`
gate. This makes OptimizerHint a generic extension point: downstream
consumers can define their own prefixed hint conventions and filter hints
by prefix, without requiring any changes to the parser or dialect
configuration.1 parent 8e36e8e commit 4e2c3ac
File tree
16 files changed
+181
-124
lines changed- src
- ast
- dialect
- parser
- tests
16 files changed
+181
-124
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
136 | | - | |
| 136 | + | |
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
| |||
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
150 | | - | |
| 150 | + | |
151 | 151 | | |
152 | 152 | | |
153 | 153 | | |
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
270 | | - | |
| 270 | + | |
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
274 | | - | |
| 274 | + | |
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
| |||
291 | 291 | | |
292 | 292 | | |
293 | 293 | | |
294 | | - | |
| 294 | + | |
295 | 295 | | |
296 | 296 | | |
297 | 297 | | |
| |||
345 | 345 | | |
346 | 346 | | |
347 | 347 | | |
348 | | - | |
| 348 | + | |
349 | 349 | | |
350 | 350 | | |
351 | 351 | | |
352 | | - | |
| 352 | + | |
353 | 353 | | |
354 | 354 | | |
355 | 355 | | |
| |||
368 | 368 | | |
369 | 369 | | |
370 | 370 | | |
371 | | - | |
372 | | - | |
373 | | - | |
| 371 | + | |
| 372 | + | |
374 | 373 | | |
| 374 | + | |
375 | 375 | | |
| 376 | + | |
376 | 377 | | |
377 | 378 | | |
378 | 379 | | |
| |||
419 | 420 | | |
420 | 421 | | |
421 | 422 | | |
422 | | - | |
| 423 | + | |
423 | 424 | | |
424 | 425 | | |
425 | | - | |
| 426 | + | |
426 | 427 | | |
427 | 428 | | |
428 | 429 | | |
| |||
440 | 441 | | |
441 | 442 | | |
442 | 443 | | |
443 | | - | |
| 444 | + | |
444 | 445 | | |
445 | 446 | | |
446 | 447 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11579 | 11579 | | |
11580 | 11580 | | |
11581 | 11581 | | |
11582 | | - | |
| 11582 | + | |
11583 | 11583 | | |
11584 | 11584 | | |
11585 | 11585 | | |
11586 | 11586 | | |
11587 | | - | |
| 11587 | + | |
| 11588 | + | |
| 11589 | + | |
| 11590 | + | |
| 11591 | + | |
| 11592 | + | |
| 11593 | + | |
| 11594 | + | |
11588 | 11595 | | |
11589 | 11596 | | |
11590 | 11597 | | |
| |||
11614 | 11621 | | |
11615 | 11622 | | |
11616 | 11623 | | |
| 11624 | + | |
11617 | 11625 | | |
11618 | 11626 | | |
11619 | 11627 | | |
11620 | 11628 | | |
11621 | | - | |
| 11629 | + | |
| 11630 | + | |
| 11631 | + | |
11622 | 11632 | | |
11623 | 11633 | | |
11624 | 11634 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
445 | 445 | | |
446 | 446 | | |
447 | 447 | | |
448 | | - | |
| 448 | + | |
449 | 449 | | |
450 | 450 | | |
451 | 451 | | |
452 | | - | |
| 452 | + | |
453 | 453 | | |
454 | 454 | | |
455 | 455 | | |
| |||
521 | 521 | | |
522 | 522 | | |
523 | 523 | | |
524 | | - | |
| 524 | + | |
525 | 525 | | |
526 | 526 | | |
527 | 527 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
897 | 897 | | |
898 | 898 | | |
899 | 899 | | |
900 | | - | |
| 900 | + | |
901 | 901 | | |
902 | 902 | | |
903 | 903 | | |
| |||
931 | 931 | | |
932 | 932 | | |
933 | 933 | | |
934 | | - | |
| 934 | + | |
935 | 935 | | |
936 | 936 | | |
937 | 937 | | |
| |||
1295 | 1295 | | |
1296 | 1296 | | |
1297 | 1297 | | |
1298 | | - | |
| 1298 | + | |
1299 | 1299 | | |
1300 | 1300 | | |
1301 | 1301 | | |
| |||
2243 | 2243 | | |
2244 | 2244 | | |
2245 | 2245 | | |
2246 | | - | |
| 2246 | + | |
2247 | 2247 | | |
2248 | 2248 | | |
2249 | 2249 | | |
| |||
2837 | 2837 | | |
2838 | 2838 | | |
2839 | 2839 | | |
2840 | | - | |
| 2840 | + | |
2841 | 2841 | | |
2842 | 2842 | | |
2843 | 2843 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1752 | 1752 | | |
1753 | 1753 | | |
1754 | 1754 | | |
1755 | | - | |
| 1755 | + | |
1756 | 1756 | | |
1757 | 1757 | | |
1758 | 1758 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| |||
0 commit comments