Skip to content

Commit 5b68e01

Browse files
committed
Merge #636 - Fix #592 - desc index lint error
Pull-request: #636 Fixes: #592 Signed-off-by: William Desportes <williamdes@wdes.fr>
2 parents 0df2427 + 16e7632 commit 5b68e01

16 files changed

+2346
-1
lines changed

src/Components/AlterOperation.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,11 @@ public static function parse(Parser $parser, TokensList $list, array $options =
453453
$token->type !== Token::TYPE_STRING &&
454454
$token->value !== 'CHECK'
455455
) {
456-
if (isset(Parser::$STATEMENT_PARSERS[$arrayKey]) && Parser::$STATEMENT_PARSERS[$arrayKey] !== '') {
456+
if (
457+
isset(Parser::$STATEMENT_PARSERS[$arrayKey])
458+
&& Parser::$STATEMENT_PARSERS[$arrayKey] !== ''
459+
&& ! in_array($arrayKey, ['ASC', 'DESC'], true)
460+
) {
457461
$list->idx++; // Ignore the current token
458462
$nextToken = $list->getNext();
459463

tests/Parser/AlterStatementTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ public static function alterProvider(): array
5151
['parser/parseAlterTableAddSpatialIndex1'],
5252
['parser/parseAlterTableAddUniqueKey1'],
5353
['parser/parseAlterTableAddUniqueKey2'],
54+
['parser/parseAlterTableAddUniqueKeyAsc'],
55+
['parser/parseAlterTableAddUniqueKeyAscDesc'],
56+
['parser/parseAlterTableAddUniqueKeyAscLower'],
57+
['parser/parseAlterTableAddUniqueKeyDesc'],
58+
['parser/parseAlterTableAddUniqueKeyDescAsc'],
59+
['parser/parseAlterTableAddUniqueKeyDescLower'],
60+
['parser/parseAlterTableAddUniqueKeyTwoDesc'],
5461
['parser/parseAlterTableDropAddIndex1'],
5562
['parser/parseAlterTableDropColumn1'],
5663
['parser/parseAlterTableModifyColumn'],
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE `bad_table_is_bad` ADD UNIQUE KEY `column1` (`column1`, `column2` ASC);
Lines changed: 317 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,317 @@
1+
{
2+
"query": "ALTER TABLE `bad_table_is_bad` ADD UNIQUE KEY `column1` (`column1`, `column2` ASC);",
3+
"lexer": {
4+
"@type": "PhpMyAdmin\\SqlParser\\Lexer",
5+
"str": "ALTER TABLE `bad_table_is_bad` ADD UNIQUE KEY `column1` (`column1`, `column2` ASC);",
6+
"len": 83,
7+
"last": 83,
8+
"list": {
9+
"@type": "PhpMyAdmin\\SqlParser\\TokensList",
10+
"tokens": [
11+
{
12+
"@type": "PhpMyAdmin\\SqlParser\\Token",
13+
"token": "ALTER",
14+
"value": "ALTER",
15+
"keyword": "ALTER",
16+
"type": 1,
17+
"flags": 3,
18+
"position": 0
19+
},
20+
{
21+
"@type": "PhpMyAdmin\\SqlParser\\Token",
22+
"token": " ",
23+
"value": " ",
24+
"keyword": null,
25+
"type": 3,
26+
"flags": 0,
27+
"position": 5
28+
},
29+
{
30+
"@type": "PhpMyAdmin\\SqlParser\\Token",
31+
"token": "TABLE",
32+
"value": "TABLE",
33+
"keyword": "TABLE",
34+
"type": 1,
35+
"flags": 3,
36+
"position": 6
37+
},
38+
{
39+
"@type": "PhpMyAdmin\\SqlParser\\Token",
40+
"token": " ",
41+
"value": " ",
42+
"keyword": null,
43+
"type": 3,
44+
"flags": 0,
45+
"position": 11
46+
},
47+
{
48+
"@type": "PhpMyAdmin\\SqlParser\\Token",
49+
"token": "`bad_table_is_bad`",
50+
"value": "bad_table_is_bad",
51+
"keyword": null,
52+
"type": 8,
53+
"flags": 2,
54+
"position": 12
55+
},
56+
{
57+
"@type": "PhpMyAdmin\\SqlParser\\Token",
58+
"token": " ",
59+
"value": " ",
60+
"keyword": null,
61+
"type": 3,
62+
"flags": 0,
63+
"position": 30
64+
},
65+
{
66+
"@type": "PhpMyAdmin\\SqlParser\\Token",
67+
"token": "ADD",
68+
"value": "ADD",
69+
"keyword": "ADD",
70+
"type": 1,
71+
"flags": 3,
72+
"position": 31
73+
},
74+
{
75+
"@type": "PhpMyAdmin\\SqlParser\\Token",
76+
"token": " ",
77+
"value": " ",
78+
"keyword": null,
79+
"type": 3,
80+
"flags": 0,
81+
"position": 34
82+
},
83+
{
84+
"@type": "PhpMyAdmin\\SqlParser\\Token",
85+
"token": "UNIQUE KEY",
86+
"value": "UNIQUE KEY",
87+
"keyword": "UNIQUE KEY",
88+
"type": 1,
89+
"flags": 23,
90+
"position": 35
91+
},
92+
{
93+
"@type": "PhpMyAdmin\\SqlParser\\Token",
94+
"token": " ",
95+
"value": " ",
96+
"keyword": null,
97+
"type": 3,
98+
"flags": 0,
99+
"position": 45
100+
},
101+
{
102+
"@type": "PhpMyAdmin\\SqlParser\\Token",
103+
"token": "`column1`",
104+
"value": "column1",
105+
"keyword": null,
106+
"type": 8,
107+
"flags": 2,
108+
"position": 46
109+
},
110+
{
111+
"@type": "PhpMyAdmin\\SqlParser\\Token",
112+
"token": " ",
113+
"value": " ",
114+
"keyword": null,
115+
"type": 3,
116+
"flags": 0,
117+
"position": 55
118+
},
119+
{
120+
"@type": "PhpMyAdmin\\SqlParser\\Token",
121+
"token": "(",
122+
"value": "(",
123+
"keyword": null,
124+
"type": 2,
125+
"flags": 16,
126+
"position": 56
127+
},
128+
{
129+
"@type": "PhpMyAdmin\\SqlParser\\Token",
130+
"token": "`column1`",
131+
"value": "column1",
132+
"keyword": null,
133+
"type": 8,
134+
"flags": 2,
135+
"position": 57
136+
},
137+
{
138+
"@type": "PhpMyAdmin\\SqlParser\\Token",
139+
"token": ",",
140+
"value": ",",
141+
"keyword": null,
142+
"type": 2,
143+
"flags": 16,
144+
"position": 66
145+
},
146+
{
147+
"@type": "PhpMyAdmin\\SqlParser\\Token",
148+
"token": " ",
149+
"value": " ",
150+
"keyword": null,
151+
"type": 3,
152+
"flags": 0,
153+
"position": 67
154+
},
155+
{
156+
"@type": "PhpMyAdmin\\SqlParser\\Token",
157+
"token": "`column2`",
158+
"value": "column2",
159+
"keyword": null,
160+
"type": 8,
161+
"flags": 2,
162+
"position": 68
163+
},
164+
{
165+
"@type": "PhpMyAdmin\\SqlParser\\Token",
166+
"token": " ",
167+
"value": " ",
168+
"keyword": null,
169+
"type": 3,
170+
"flags": 0,
171+
"position": 77
172+
},
173+
{
174+
"@type": "PhpMyAdmin\\SqlParser\\Token",
175+
"token": "ASC",
176+
"value": "ASC",
177+
"keyword": "ASC",
178+
"type": 1,
179+
"flags": 3,
180+
"position": 78
181+
},
182+
{
183+
"@type": "PhpMyAdmin\\SqlParser\\Token",
184+
"token": ")",
185+
"value": ")",
186+
"keyword": null,
187+
"type": 2,
188+
"flags": 16,
189+
"position": 81
190+
},
191+
{
192+
"@type": "PhpMyAdmin\\SqlParser\\Token",
193+
"token": ";",
194+
"value": ";",
195+
"keyword": null,
196+
"type": 9,
197+
"flags": 0,
198+
"position": 82
199+
},
200+
{
201+
"@type": "PhpMyAdmin\\SqlParser\\Token",
202+
"token": null,
203+
"value": null,
204+
"keyword": null,
205+
"type": 9,
206+
"flags": 0,
207+
"position": null
208+
}
209+
],
210+
"count": 22,
211+
"idx": 22
212+
},
213+
"delimiter": ";",
214+
"delimiterLen": 1,
215+
"strict": false,
216+
"errors": []
217+
},
218+
"parser": {
219+
"@type": "PhpMyAdmin\\SqlParser\\Parser",
220+
"list": {
221+
"@type": "@1"
222+
},
223+
"statements": [
224+
{
225+
"@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement",
226+
"table": {
227+
"@type": "PhpMyAdmin\\SqlParser\\Components\\Expression",
228+
"database": null,
229+
"table": "bad_table_is_bad",
230+
"column": null,
231+
"expr": "`bad_table_is_bad`",
232+
"alias": null,
233+
"function": null,
234+
"subquery": null
235+
},
236+
"altered": [
237+
{
238+
"@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation",
239+
"ROUTINE_OPTIONS": {
240+
"COMMENT": [
241+
1,
242+
"var"
243+
],
244+
"LANGUAGE SQL": 2,
245+
"CONTAINS SQL": 3,
246+
"NO SQL": 3,
247+
"READS SQL DATA": 3,
248+
"MODIFIES SQL DATA": 3,
249+
"SQL SECURITY": 4,
250+
"DEFINER": 5,
251+
"INVOKER": 5
252+
},
253+
"options": {
254+
"@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray",
255+
"options": {
256+
"1": "ADD",
257+
"2": "UNIQUE KEY"
258+
}
259+
},
260+
"field": {
261+
"@type": "PhpMyAdmin\\SqlParser\\Components\\Expression",
262+
"database": null,
263+
"table": null,
264+
"column": "column1",
265+
"expr": "`column1`",
266+
"alias": null,
267+
"function": null,
268+
"subquery": null
269+
},
270+
"partitions": null,
271+
"unknown": [
272+
{
273+
"@type": "@14"
274+
},
275+
{
276+
"@type": "@15"
277+
},
278+
{
279+
"@type": "@16"
280+
},
281+
{
282+
"@type": "@17"
283+
},
284+
{
285+
"@type": "@18"
286+
},
287+
{
288+
"@type": "@19"
289+
},
290+
{
291+
"@type": "@20"
292+
},
293+
{
294+
"@type": "@21"
295+
}
296+
]
297+
}
298+
],
299+
"options": {
300+
"@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray",
301+
"options": {
302+
"3": "TABLE"
303+
}
304+
},
305+
"first": 0,
306+
"last": 20
307+
}
308+
],
309+
"brackets": 0,
310+
"strict": false,
311+
"errors": []
312+
},
313+
"errors": {
314+
"lexer": [],
315+
"parser": []
316+
}
317+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE `bad_table_is_bad` ADD UNIQUE KEY `asc_desc_key` (`column1` ASC, `column2` DESC);

0 commit comments

Comments
 (0)