Skip to content

Commit 7c0096a

Browse files
authored
Merge pull request #106 from mvorisek/more_reserved_kws
Add all "type reserved" MySQL keywords
2 parents b039a9d + 1c0187f commit 7c0096a

6 files changed

+1774
-208
lines changed

src/Tokenizer.php

+57-23
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ final class Tokenizer
2929
private array $reserved = [
3030
'ACCESSIBLE',
3131
'ACTION',
32+
'ADD',
3233
'AFTER',
3334
'AGAINST',
3435
'AGGREGATE',
@@ -37,19 +38,25 @@ final class Tokenizer
3738
'ALTER',
3839
'ANALYSE',
3940
'ANALYZE',
41+
'AND',
4042
'AS',
4143
'ASC',
4244
'AUTOCOMMIT',
4345
'AUTO_INCREMENT',
4446
'BACKUP',
4547
'BEGIN',
4648
'BETWEEN',
49+
'BIGINT',
50+
'BINARY',
4751
'BINLOG',
52+
'BLOB',
4853
'BOTH',
54+
'BY',
4955
'CASCADE',
5056
'CASE',
5157
'CHANGE',
5258
'CHANGED',
59+
'CHAR',
5360
'CHARACTER',
5461
'CHARSET',
5562
'CHECK',
@@ -76,6 +83,7 @@ final class Tokenizer
7683
'DAY_HOUR',
7784
'DAY_MINUTE',
7885
'DAY_SECOND',
86+
'DECIMAL',
7987
'DEFAULT',
8088
'DEFINER',
8189
'DELAYED',
@@ -87,6 +95,8 @@ final class Tokenizer
8795
'DISTINCTROW',
8896
'DIV',
8997
'DO',
98+
'DOUBLE',
99+
'DROP',
90100
'DUMPFILE',
91101
'DUPLICATE',
92102
'DYNAMIC',
@@ -99,22 +109,29 @@ final class Tokenizer
99109
'ESCAPE',
100110
'ESCAPED',
101111
'EVENTS',
112+
'EXCEPT',
113+
'EXCLUDE',
102114
'EXEC',
103115
'EXECUTE',
104116
'EXISTS',
105117
'EXPLAIN',
106118
'EXTENDED',
119+
'FALSE',
107120
'FAST',
108121
'FIELDS',
109122
'FILE',
110123
'FILTER',
111124
'FIRST',
112125
'FIXED',
126+
'FLOAT',
127+
'FLOAT4',
128+
'FLOAT8',
113129
'FLUSH',
114130
'FOLLOWING',
115131
'FOR',
116132
'FORCE',
117133
'FOREIGN',
134+
'FROM',
118135
'FULL',
119136
'FULLTEXT',
120137
'FUNCTION',
@@ -123,6 +140,7 @@ final class Tokenizer
123140
'GRANTS',
124141
'GROUP',
125142
'GROUPS',
143+
'HAVING',
126144
'HEAP',
127145
'HIGH_PRIORITY',
128146
'HOSTS',
@@ -137,28 +155,43 @@ final class Tokenizer
137155
'INDEX',
138156
'INDEXES',
139157
'INFILE',
158+
'INNER',
140159
'INSERT',
141160
'INSERT_ID',
142161
'INSERT_METHOD',
162+
'INT',
163+
'INT1',
164+
'INT2',
165+
'INT3',
166+
'INT4',
167+
'INT8',
168+
'INTEGER',
169+
'INTERSECT',
143170
'INTERVAL',
144171
'INTO',
145172
'INVOKER',
146173
'IS',
147174
'ISOLATION',
175+
'JOIN',
148176
'KEY',
149177
'KEYS',
150178
'KILL',
151179
'LAST_INSERT_ID',
152180
'LEADING',
181+
'LEFT',
153182
'LEVEL',
154183
'LIKE',
184+
'LIMIT',
155185
'LINEAR',
156186
'LINES',
157187
'LOAD',
158188
'LOCAL',
159189
'LOCK',
160190
'LOCKS',
161191
'LOGS',
192+
'LONG',
193+
'LONGBLOB',
194+
'LONGTEXT',
162195
'LOW_PRIORITY',
163196
'MARIA',
164197
'MASTER',
@@ -172,24 +205,32 @@ final class Tokenizer
172205
'MAX_UPDATES_PER_HOUR',
173206
'MAX_USER_CONNECTIONS',
174207
'MEDIUM',
208+
'MEDIUMBLOB',
209+
'MEDIUMINT',
210+
'MEDIUMTEXT',
175211
'MERGE',
176212
'MINUTE',
177213
'MINUTE_SECOND',
178214
'MIN_ROWS',
179215
'MODE',
216+
'MODIFY',
180217
'MONTH',
181218
'MRG_MYISAM',
182219
'MYISAM',
183220
'NAMES',
184221
'NATURAL',
185222
'NOT',
186223
'NULL',
224+
'NUMERIC',
187225
'OFFSET',
188226
'ON',
189227
'OPEN',
190228
'OPTIMIZE',
191229
'OPTION',
192230
'OPTIONALLY',
231+
'OR',
232+
'ORDER',
233+
'OUTER',
193234
'OUTFILE',
194235
'OVER',
195236
'PACK_KEYS',
@@ -214,6 +255,7 @@ final class Tokenizer
214255
'READ',
215256
'READ_ONLY',
216257
'READ_WRITE',
258+
'REAL',
217259
'RECURSIVE',
218260
'REFERENCES',
219261
'REGEXP',
@@ -229,13 +271,15 @@ final class Tokenizer
229271
'RETURN',
230272
'RETURNS',
231273
'REVOKE',
274+
'RIGHT',
232275
'RLIKE',
233276
'ROLLBACK',
234277
'ROW',
235278
'ROWS',
236279
'ROW_FORMAT',
237280
'SECOND',
238281
'SECURITY',
282+
'SELECT',
239283
'SEPARATOR',
240284
'SERIALIZABLE',
241285
'SESSION',
@@ -244,6 +288,7 @@ final class Tokenizer
244288
'SHOW',
245289
'SHUTDOWN',
246290
'SLAVE',
291+
'SMALLINT',
247292
'SONAME',
248293
'SOUNDS',
249294
'SQL',
@@ -281,6 +326,9 @@ final class Tokenizer
281326
'TERMINATED',
282327
'THEN',
283328
'TIES',
329+
'TINYBLOB',
330+
'TINYINT',
331+
'TINYTEXT',
284332
'TO',
285333
'TRAILING',
286334
'TRANSACTIONAL',
@@ -290,18 +338,27 @@ final class Tokenizer
290338
'TYPES',
291339
'UNBOUNDED',
292340
'UNCOMMITTED',
341+
'UNION',
293342
'UNIQUE',
294343
'UNLOCK',
295344
'UNSIGNED',
345+
'UPDATE',
296346
'USAGE',
297347
'USE',
298348
'USING',
349+
'VALUES',
350+
'VARBINARY',
351+
'VARCHAR',
352+
'VARCHARACTER',
299353
'VARIABLES',
300354
'VIEW',
301355
'WHEN',
356+
'WHERE',
357+
'WINDOW',
302358
'WITH',
303359
'WORK',
304360
'WRITE',
361+
'XOR',
305362
'YEAR_MONTH',
306363
];
307364

@@ -389,21 +446,16 @@ final class Tokenizer
389446
'CEIL',
390447
'CEILING',
391448
'CENTROID',
392-
'CHAR',
393449
'CHARACTER_LENGTH',
394-
'CHARSET',
395450
'CHAR_LENGTH',
396451
'CHECKSUM_AGG',
397452
'COALESCE',
398453
'COERCIBILITY',
399-
'COLLATION',
400454
'COMPRESS',
401455
'CONCAT',
402456
'CONCAT_WS',
403457
'CONNECTION_ID',
404-
'CONTAINS',
405458
'CONV',
406-
'CONVERT',
407459
'CONVERT_TZ',
408460
'CONVEXHULL',
409461
'COS',
@@ -416,23 +468,19 @@ final class Tokenizer
416468
'CURDATE',
417469
'CURRENT_DATE',
418470
'CURRENT_TIME',
419-
'CURRENT_TIMESTAMP',
420471
'CURRENT_USER',
421472
'CURTIME',
422-
'DATABASE',
423473
'DATE',
424474
'DATEDIFF',
425475
'DATE_ADD',
426476
'DATE_DIFF',
427477
'DATE_FORMAT',
428478
'DATE_SUB',
429-
'DAY',
430479
'DAYNAME',
431480
'DAYOFMONTH',
432481
'DAYOFWEEK',
433482
'DAYOFYEAR',
434483
'DECODE',
435-
'DEFAULT',
436484
'DEGREES',
437485
'DENSE_RANK',
438486
'DES_DECRYPT',
@@ -480,17 +528,12 @@ final class Tokenizer
480528
'GROUP_CONCAT',
481529
'GROUP_UNIQUE_USERS',
482530
'HEX',
483-
'HOUR',
484-
'IF',
485-
'IFNULL',
486531
'INET_ATON',
487532
'INET_NTOA',
488-
'INSERT',
489533
'INSTR',
490534
'INTERIORRINGN',
491535
'INTERSECTION',
492536
'INTERSECTS',
493-
'INTERVAL',
494537
'ISCLOSED',
495538
'ISEMPTY',
496539
'ISNULL',
@@ -500,12 +543,10 @@ final class Tokenizer
500543
'IS_USED_LOCK',
501544
'LAG',
502545
'LAST_DAY',
503-
'LAST_INSERT_ID',
504546
'LAST_VALUE',
505547
'LCASE',
506548
'LEAD',
507549
'LEAST',
508-
'LEFT',
509550
'LENGTH',
510551
'LINEFROMTEXT',
511552
'LINEFROMWKB',
@@ -540,11 +581,9 @@ final class Tokenizer
540581
'MICROSECOND',
541582
'MID',
542583
'MIN',
543-
'MINUTE',
544584
'MLINEFROMTEXT',
545585
'MLINEFROMWKB',
546586
'MOD',
547-
'MONTH',
548587
'MONTHNAME',
549588
'MPOINTFROMTEXT',
550589
'MPOINTFROMWKB',
@@ -572,7 +611,6 @@ final class Tokenizer
572611
'OLD_PASSWORD',
573612
'ORD',
574613
'OVERLAPS',
575-
'PASSWORD',
576614
'PERCENTILE_CONT',
577615
'PERCENTILE_DISC',
578616
'PERCENT_RANK',
@@ -600,16 +638,13 @@ final class Tokenizer
600638
'RELATED',
601639
'RELEASE_LOCK',
602640
'REPEAT',
603-
'REPLACE',
604641
'REVERSE',
605-
'RIGHT',
606642
'ROUND',
607643
'ROW_COUNT',
608644
'ROW_NUMBER',
609645
'RPAD',
610646
'RTRIM',
611647
'SCHEMA',
612-
'SECOND',
613648
'SEC_TO_TIME',
614649
'SESSION_USER',
615650
'SHA',
@@ -651,7 +686,6 @@ final class Tokenizer
651686
'TOUCHES',
652687
'TO_DAYS',
653688
'TRIM',
654-
'TRUNCATE',
655689
'UCASE',
656690
'UNCOMPRESS',
657691
'UNCOMPRESSED_LENGTH',

tests/SqlFormatterTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function testHighlightBinary(): void
6969
$html = '<pre style="color: black; background-color: white;">' .
7070
'<span style="font-weight:bold;">SELECT</span> <span style="color: blue;">' .
7171
$binaryData .
72-
'</span> <span style="font-weight:bold;">AS</span> <span style="color: #333;">BINARY</span></pre>';
72+
'</span> <span style="font-weight:bold;">AS</span> <span style="font-weight:bold;">BINARY</span></pre>';
7373

7474
$this->assertSame($html, $this->formatter->highlight($sql));
7575
}

0 commit comments

Comments
 (0)