Commit 9d6b46c
committed
fix(mysql): Convert boolean literals (true/false) to bool type
Previously, MySQL boolean literals like `SELECT true` were incorrectly
converted to int32 type, while table columns with BOOL/BOOLEAN/TINYINT(1)
types were correctly converted to bool.
The TiDB parser represents boolean literals as mysql.TypeLonglong with
value 1 (true) or 0 (false), which was indistinguishable from integer
literals like `SELECT 1`.
This fix:
- Detects boolean literals by examining the original SQL text
- Converts `true`/`false` (case-insensitive) to bool type
- Preserves integer literals like `SELECT 1` as int32
- Supports all case variations: TRUE, True, FALSE, False, etc.
Test cases:
- SELECT true/false → bool
- SELECT TRUE/FALSE → bool
- SELECT true AS col → bool
- SELECT 1/0 → int32 (unchanged)1 parent 2e0435c commit 9d6b46c
File tree
7 files changed
+163
-1
lines changed- internal
- endtoend/testdata/select_true_literal/mysql
- db
- engine/dolphin
7 files changed
+163
-1
lines changedLines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 60 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
672 | 673 | | |
673 | 674 | | |
674 | 675 | | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
675 | 711 | | |
676 | 712 | | |
677 | 713 | | |
| |||
691 | 727 | | |
692 | 728 | | |
693 | 729 | | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
694 | 739 | | |
695 | 740 | | |
696 | 741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
0 commit comments