Commit 69888cc
committed
Use
Index column lists generally allow for more flexibility than just column
names: i.e. `ASC`/`DESC` modifiers, Postgres opclasses, MySQL column
prefix length, and generic expressions/"functional key parts".
This change uses the existing support for these constructs added in
#1707 for `CREATE INDEX` and changes the AST for `ALTER TABLE <table>
ADD KEY` (and associated variants), and constraints present in `CREATE
TABLE` statements to support these constructs in those location.
Note that, as was already the case with existing `CREATE INDEX` support,
there is no special representation for MySQL column prefix length
(`INDEX (textcol(10))`), nor do we require the enclosing parentheses for
MySQL functional key parts (`INDEX ((col1 + col2))`; for Postgres, this
is optional if it doesn't introduce ambiguity). Instead, these are
parsed generically as expressions, so the former is parsed as a function
call and the latter is wrapped in `Expr::Nested`.
Also note that, as far as I can tell, no dialect supports these more
general column expressions in the case of `FOREIGN KEY` constraints, so
the parsing and AST for foreign keys are left unchanged.IndexColumn in all index definitions1 parent 185a490 commit 69888cc
File tree
5 files changed
+185
-35
lines changed- src
- ast
- parser
- tests
5 files changed
+185
-35
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
36 | | - | |
37 | | - | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
979 | 979 | | |
980 | 980 | | |
981 | 981 | | |
982 | | - | |
| 982 | + | |
983 | 983 | | |
984 | 984 | | |
985 | 985 | | |
| |||
1015 | 1015 | | |
1016 | 1016 | | |
1017 | 1017 | | |
1018 | | - | |
| 1018 | + | |
1019 | 1019 | | |
1020 | 1020 | | |
1021 | 1021 | | |
| |||
1060 | 1060 | | |
1061 | 1061 | | |
1062 | 1062 | | |
1063 | | - | |
| 1063 | + | |
1064 | 1064 | | |
1065 | 1065 | | |
1066 | 1066 | | |
| |||
1083 | 1083 | | |
1084 | 1084 | | |
1085 | 1085 | | |
1086 | | - | |
| 1086 | + | |
1087 | 1087 | | |
1088 | 1088 | | |
1089 | 1089 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
| |||
650 | 651 | | |
651 | 652 | | |
652 | 653 | | |
653 | | - | |
| 654 | + | |
654 | 655 | | |
655 | 656 | | |
656 | 657 | | |
| |||
664 | 665 | | |
665 | 666 | | |
666 | 667 | | |
667 | | - | |
| 668 | + | |
668 | 669 | | |
669 | 670 | | |
670 | 671 | | |
| |||
700 | 701 | | |
701 | 702 | | |
702 | 703 | | |
703 | | - | |
| 704 | + | |
704 | 705 | | |
705 | 706 | | |
706 | 707 | | |
| |||
711 | 712 | | |
712 | 713 | | |
713 | 714 | | |
714 | | - | |
| 715 | + | |
715 | 716 | | |
716 | 717 | | |
717 | 718 | | |
| |||
745 | 746 | | |
746 | 747 | | |
747 | 748 | | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
748 | 755 | | |
749 | 756 | | |
750 | 757 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6868 | 6868 | | |
6869 | 6869 | | |
6870 | 6870 | | |
6871 | | - | |
6872 | | - | |
6873 | | - | |
| 6871 | + | |
6874 | 6872 | | |
6875 | 6873 | | |
6876 | 6874 | | |
| |||
8070 | 8068 | | |
8071 | 8069 | | |
8072 | 8070 | | |
8073 | | - | |
| 8071 | + | |
8074 | 8072 | | |
8075 | 8073 | | |
8076 | 8074 | | |
| |||
8092 | 8090 | | |
8093 | 8091 | | |
8094 | 8092 | | |
8095 | | - | |
| 8093 | + | |
8096 | 8094 | | |
8097 | 8095 | | |
8098 | 8096 | | |
| |||
8170 | 8168 | | |
8171 | 8169 | | |
8172 | 8170 | | |
8173 | | - | |
| 8171 | + | |
8174 | 8172 | | |
8175 | 8173 | | |
8176 | 8174 | | |
| |||
8199 | 8197 | | |
8200 | 8198 | | |
8201 | 8199 | | |
8202 | | - | |
| 8200 | + | |
8203 | 8201 | | |
8204 | 8202 | | |
8205 | 8203 | | |
| |||
10595 | 10593 | | |
10596 | 10594 | | |
10597 | 10595 | | |
| 10596 | + | |
| 10597 | + | |
| 10598 | + | |
| 10599 | + | |
| 10600 | + | |
| 10601 | + | |
| 10602 | + | |
| 10603 | + | |
| 10604 | + | |
| 10605 | + | |
10598 | 10606 | | |
10599 | 10607 | | |
10600 | 10608 | | |
| |||
16476 | 16484 | | |
16477 | 16485 | | |
16478 | 16486 | | |
| 16487 | + | |
| 16488 | + | |
| 16489 | + | |
| 16490 | + | |
| 16491 | + | |
| 16492 | + | |
| 16493 | + | |
| 16494 | + | |
| 16495 | + | |
| 16496 | + | |
| 16497 | + | |
| 16498 | + | |
| 16499 | + | |
| 16500 | + | |
| 16501 | + | |
| 16502 | + | |
16479 | 16503 | | |
16480 | 16504 | | |
16481 | 16505 | | |
| |||
16486 | 16510 | | |
16487 | 16511 | | |
16488 | 16512 | | |
16489 | | - | |
| 16513 | + | |
16490 | 16514 | | |
16491 | 16515 | | |
16492 | 16516 | | |
| |||
16497 | 16521 | | |
16498 | 16522 | | |
16499 | 16523 | | |
16500 | | - | |
| 16524 | + | |
16501 | 16525 | | |
16502 | 16526 | | |
16503 | 16527 | | |
| |||
16508 | 16532 | | |
16509 | 16533 | | |
16510 | 16534 | | |
16511 | | - | |
| 16535 | + | |
16512 | 16536 | | |
16513 | 16537 | | |
16514 | 16538 | | |
| |||
16519 | 16543 | | |
16520 | 16544 | | |
16521 | 16545 | | |
16522 | | - | |
| 16546 | + | |
16523 | 16547 | | |
16524 | 16548 | | |
16525 | 16549 | | |
| |||
16530 | 16554 | | |
16531 | 16555 | | |
16532 | 16556 | | |
16533 | | - | |
| 16557 | + | |
16534 | 16558 | | |
16535 | 16559 | | |
16536 | 16560 | | |
| |||
16541 | 16565 | | |
16542 | 16566 | | |
16543 | 16567 | | |
16544 | | - | |
| 16568 | + | |
16545 | 16569 | | |
16546 | 16570 | | |
16547 | 16571 | | |
| |||
16552 | 16576 | | |
16553 | 16577 | | |
16554 | 16578 | | |
16555 | | - | |
| 16579 | + | |
16556 | 16580 | | |
16557 | 16581 | | |
16558 | 16582 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
448 | 448 | | |
449 | 449 | | |
450 | 450 | | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
0 commit comments