Skip to content

Commit a1c555a

Browse files
Merge pull request #581 from niconoe-/fix/580
Proposal for a fix of #580. Fixes #580
2 parents 91d980a + 34c7539 commit a1c555a

9 files changed

+688
-34
lines changed

src/Components/AlterOperation.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,10 @@ class AlterOperation extends Component
131131
'BY' => 2,
132132
'FOREIGN' => 2,
133133
'FULLTEXT' => 2,
134-
'KEY' => 2,
134+
'KEY' => [
135+
2,
136+
'var',
137+
],
135138
'KEYS' => 2,
136139
'PARTITION' => 2,
137140
'PARTITION BY' => 2,

tests/Parser/AlterStatementTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public static function alterProvider(): array
4242
['parser/parseAlterErr4'],
4343
['parser/parseAlterTableRenameIndex1'],
4444
['parser/parseAlterTableRenameIndex2'],
45+
['parser/parseAlterTableRenameKey1'],
46+
['parser/parseAlterTableRenameKey2'],
4547
['parser/parseAlterTablePartitionByRange1'],
4648
['parser/parseAlterTablePartitionByRange2'],
4749
['parser/parseAlterTableCoalescePartition'],

tests/data/bugs/gh317.out

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,15 @@
209209
"@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray",
210210
"options": {
211211
"1": "ADD",
212-
"2": "KEY"
212+
"2": {
213+
"name": "KEY",
214+
"equals": false,
215+
"expr": "`IDX_REPAIR`",
216+
"value": "IDX_REPAIR"
217+
}
213218
}
214219
},
215-
"field": {
216-
"@type": "PhpMyAdmin\\SqlParser\\Components\\Expression",
217-
"database": null,
218-
"table": null,
219-
"column": "IDX_REPAIR",
220-
"expr": "`IDX_REPAIR`",
221-
"alias": null,
222-
"function": null,
223-
"subquery": null
224-
},
220+
"field": null,
225221
"partitions": null,
226222
"unknown": [
227223
{

tests/data/parser/parseAlter.out

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -327,19 +327,15 @@
327327
"@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray",
328328
"options": {
329329
"1": "ADD",
330-
"2": "KEY"
330+
"2": {
331+
"name": "KEY",
332+
"equals": false,
333+
"expr": "`idx_actor_last_name`",
334+
"value": "idx_actor_last_name"
335+
}
331336
}
332337
},
333-
"field": {
334-
"@type": "PhpMyAdmin\\SqlParser\\Components\\Expression",
335-
"database": null,
336-
"table": null,
337-
"column": "idx_actor_last_name",
338-
"expr": "`idx_actor_last_name`",
339-
"alias": null,
340-
"function": null,
341-
"subquery": null
342-
},
338+
"field": null,
343339
"partitions": null,
344340
"unknown": [
345341
{
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`
Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
{
2+
"query": "ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`\n",
3+
"lexer": {
4+
"@type": "PhpMyAdmin\\SqlParser\\Lexer",
5+
"str": "ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`\n",
6+
"len": 119,
7+
"last": 119,
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": "`transactions`",
50+
"value": "transactions",
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": 26
64+
},
65+
{
66+
"@type": "PhpMyAdmin\\SqlParser\\Token",
67+
"token": "RENAME",
68+
"value": "RENAME",
69+
"keyword": "RENAME",
70+
"type": 1,
71+
"flags": 3,
72+
"position": 27
73+
},
74+
{
75+
"@type": "PhpMyAdmin\\SqlParser\\Token",
76+
"token": " ",
77+
"value": " ",
78+
"keyword": null,
79+
"type": 3,
80+
"flags": 0,
81+
"position": 33
82+
},
83+
{
84+
"@type": "PhpMyAdmin\\SqlParser\\Token",
85+
"token": "KEY",
86+
"value": "KEY",
87+
"keyword": "KEY",
88+
"type": 1,
89+
"flags": 19,
90+
"position": 34
91+
},
92+
{
93+
"@type": "PhpMyAdmin\\SqlParser\\Token",
94+
"token": " ",
95+
"value": " ",
96+
"keyword": null,
97+
"type": 3,
98+
"flags": 0,
99+
"position": 37
100+
},
101+
{
102+
"@type": "PhpMyAdmin\\SqlParser\\Token",
103+
"token": "`fk_transactions_catalog_entries1_idx`",
104+
"value": "fk_transactions_catalog_entries1_idx",
105+
"keyword": null,
106+
"type": 8,
107+
"flags": 2,
108+
"position": 38
109+
},
110+
{
111+
"@type": "PhpMyAdmin\\SqlParser\\Token",
112+
"token": " ",
113+
"value": " ",
114+
"keyword": null,
115+
"type": 3,
116+
"flags": 0,
117+
"position": 76
118+
},
119+
{
120+
"@type": "PhpMyAdmin\\SqlParser\\Token",
121+
"token": "TO",
122+
"value": "TO",
123+
"keyword": "TO",
124+
"type": 1,
125+
"flags": 3,
126+
"position": 77
127+
},
128+
{
129+
"@type": "PhpMyAdmin\\SqlParser\\Token",
130+
"token": " ",
131+
"value": " ",
132+
"keyword": null,
133+
"type": 3,
134+
"flags": 0,
135+
"position": 79
136+
},
137+
{
138+
"@type": "PhpMyAdmin\\SqlParser\\Token",
139+
"token": "`fk_transactions_catalog_entries2_idx`",
140+
"value": "fk_transactions_catalog_entries2_idx",
141+
"keyword": null,
142+
"type": 8,
143+
"flags": 2,
144+
"position": 80
145+
},
146+
{
147+
"@type": "PhpMyAdmin\\SqlParser\\Token",
148+
"token": "\n",
149+
"value": " ",
150+
"keyword": null,
151+
"type": 3,
152+
"flags": 0,
153+
"position": 118
154+
},
155+
{
156+
"@type": "PhpMyAdmin\\SqlParser\\Token",
157+
"token": null,
158+
"value": null,
159+
"keyword": null,
160+
"type": 9,
161+
"flags": 0,
162+
"position": null
163+
}
164+
],
165+
"count": 17,
166+
"idx": 17
167+
},
168+
"delimiter": ";",
169+
"delimiterLen": 1,
170+
"strict": false,
171+
"errors": []
172+
},
173+
"parser": {
174+
"@type": "PhpMyAdmin\\SqlParser\\Parser",
175+
"list": {
176+
"@type": "@1"
177+
},
178+
"statements": [
179+
{
180+
"@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement",
181+
"table": {
182+
"@type": "PhpMyAdmin\\SqlParser\\Components\\Expression",
183+
"database": null,
184+
"table": "transactions",
185+
"column": null,
186+
"expr": "`transactions`",
187+
"alias": null,
188+
"function": null,
189+
"subquery": null
190+
},
191+
"altered": [
192+
{
193+
"@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation",
194+
"ROUTINE_OPTIONS": {
195+
"COMMENT": [
196+
1,
197+
"var"
198+
],
199+
"LANGUAGE SQL": 2,
200+
"CONTAINS SQL": 3,
201+
"NO SQL": 3,
202+
"READS SQL DATA": 3,
203+
"MODIFIES SQL DATA": 3,
204+
"SQL SECURITY": 4,
205+
"DEFINER": 5,
206+
"INVOKER": 5
207+
},
208+
"options": {
209+
"@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray",
210+
"options": {
211+
"1": "RENAME",
212+
"2": {
213+
"name": "KEY",
214+
"equals": false,
215+
"expr": "`fk_transactions_catalog_entries1_idx`",
216+
"value": "fk_transactions_catalog_entries1_idx"
217+
},
218+
"3": {
219+
"name": "TO",
220+
"equals": false,
221+
"expr": "`fk_transactions_catalog_entries2_idx`",
222+
"value": "fk_transactions_catalog_entries2_idx"
223+
}
224+
}
225+
},
226+
"field": null,
227+
"partitions": null,
228+
"unknown": []
229+
}
230+
],
231+
"options": {
232+
"@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray",
233+
"options": {
234+
"3": "TABLE"
235+
}
236+
},
237+
"first": 0,
238+
"last": 16
239+
}
240+
],
241+
"brackets": 0,
242+
"strict": false,
243+
"errors": []
244+
},
245+
"errors": {
246+
"lexer": [],
247+
"parser": []
248+
}
249+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;

0 commit comments

Comments
 (0)