Commit b84315a
committed
Parse signed/unsigned integer data types correctly in MySQL CAST
MySQL doesn't have the same set of possible CAST types as for e.g.
column definitions. For example, it raises a syntax error for `CAST(1 AS
INTEGER SIGNED)` and instead expects `CAST(1 AS SIGNED INTEGER)`.
This patch takes a somewhat unfortunate route of 1) adding a boolean
flag that modifies the `parse_data_type` match expression, and 2)
storing whether it was parsed this way in the `Expr::Cast` AST node to
be used during formatting. Feedback and ideas for alternative approaches
are very welcome.
Closes #15891 parent 3ace97c commit b84315a
File tree
8 files changed
+150
-64
lines changed- src
- ast
- parser
- tests
8 files changed
+150
-64
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
798 | 798 | | |
799 | 799 | | |
800 | 800 | | |
801 | | - | |
802 | | - | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
803 | 804 | | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
804 | 810 | | |
805 | 811 | | |
806 | 812 | | |
| |||
1560 | 1566 | | |
1561 | 1567 | | |
1562 | 1568 | | |
1563 | | - | |
1564 | | - | |
1565 | | - | |
1566 | | - | |
1567 | | - | |
1568 | | - | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
1569 | 1585 | | |
1570 | | - | |
1571 | | - | |
1572 | | - | |
1573 | | - | |
1574 | | - | |
1575 | | - | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
1576 | 1592 | | |
1577 | | - | |
1578 | | - | |
1579 | | - | |
1580 | | - | |
1581 | | - | |
1582 | | - | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
1583 | 1602 | | |
1584 | 1603 | | |
1585 | | - | |
1586 | | - | |
1587 | | - | |
1588 | | - | |
| 1604 | + | |
1589 | 1605 | | |
1590 | 1606 | | |
1591 | 1607 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1407 | 1407 | | |
1408 | 1408 | | |
1409 | 1409 | | |
| 1410 | + | |
1410 | 1411 | | |
1411 | 1412 | | |
1412 | 1413 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
790 | 790 | | |
791 | 791 | | |
792 | 792 | | |
| 793 | + | |
793 | 794 | | |
794 | 795 | | |
795 | 796 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2175 | 2175 | | |
2176 | 2176 | | |
2177 | 2177 | | |
2178 | | - | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
2179 | 2183 | | |
2180 | 2184 | | |
2181 | 2185 | | |
2182 | 2186 | | |
2183 | 2187 | | |
2184 | 2188 | | |
2185 | 2189 | | |
| 2190 | + | |
2186 | 2191 | | |
2187 | 2192 | | |
2188 | 2193 | | |
| |||
2884 | 2889 | | |
2885 | 2890 | | |
2886 | 2891 | | |
2887 | | - | |
| 2892 | + | |
2888 | 2893 | | |
2889 | 2894 | | |
2890 | 2895 | | |
| |||
3401 | 3406 | | |
3402 | 3407 | | |
3403 | 3408 | | |
| 3409 | + | |
3404 | 3410 | | |
3405 | 3411 | | |
3406 | 3412 | | |
| |||
3641 | 3647 | | |
3642 | 3648 | | |
3643 | 3649 | | |
| 3650 | + | |
3644 | 3651 | | |
3645 | 3652 | | |
3646 | 3653 | | |
| |||
8793 | 8800 | | |
8794 | 8801 | | |
8795 | 8802 | | |
8796 | | - | |
| 8803 | + | |
| 8804 | + | |
| 8805 | + | |
| 8806 | + | |
| 8807 | + | |
| 8808 | + | |
| 8809 | + | |
| 8810 | + | |
| 8811 | + | |
| 8812 | + | |
8797 | 8813 | | |
8798 | 8814 | | |
8799 | 8815 | | |
| |||
8806 | 8822 | | |
8807 | 8823 | | |
8808 | 8824 | | |
| 8825 | + | |
8809 | 8826 | | |
8810 | 8827 | | |
8811 | 8828 | | |
| |||
8832 | 8849 | | |
8833 | 8850 | | |
8834 | 8851 | | |
8835 | | - | |
| 8852 | + | |
8836 | 8853 | | |
8837 | 8854 | | |
8838 | 8855 | | |
| |||
8848 | 8865 | | |
8849 | 8866 | | |
8850 | 8867 | | |
8851 | | - | |
| 8868 | + | |
8852 | 8869 | | |
8853 | 8870 | | |
8854 | 8871 | | |
8855 | 8872 | | |
8856 | 8873 | | |
8857 | 8874 | | |
8858 | 8875 | | |
8859 | | - | |
| 8876 | + | |
8860 | 8877 | | |
8861 | 8878 | | |
8862 | 8879 | | |
8863 | 8880 | | |
8864 | 8881 | | |
8865 | 8882 | | |
8866 | 8883 | | |
8867 | | - | |
| 8884 | + | |
8868 | 8885 | | |
8869 | 8886 | | |
8870 | 8887 | | |
| |||
8893 | 8910 | | |
8894 | 8911 | | |
8895 | 8912 | | |
8896 | | - | |
| 8913 | + | |
8897 | 8914 | | |
8898 | 8915 | | |
8899 | 8916 | | |
8900 | 8917 | | |
8901 | 8918 | | |
8902 | 8919 | | |
8903 | 8920 | | |
8904 | | - | |
| 8921 | + | |
8905 | 8922 | | |
8906 | 8923 | | |
8907 | 8924 | | |
| |||
9049 | 9066 | | |
9050 | 9067 | | |
9051 | 9068 | | |
9052 | | - | |
| 9069 | + | |
| 9070 | + | |
9053 | 9071 | | |
9054 | 9072 | | |
9055 | 9073 | | |
| |||
9110 | 9128 | | |
9111 | 9129 | | |
9112 | 9130 | | |
| 9131 | + | |
| 9132 | + | |
| 9133 | + | |
| 9134 | + | |
| 9135 | + | |
| 9136 | + | |
| 9137 | + | |
| 9138 | + | |
9113 | 9139 | | |
9114 | 9140 | | |
9115 | 9141 | | |
| |||
0 commit comments