Proper Error handling of Schema
[phpmyadmin-themes.git] / libraries / sqlparser.data.php
blob8af6458742c91b085f2d4df5cae67c7587e2eff0
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * SQL Parser Matching Data
6 * Copyright 2002 Robin Johnson <robbat2@users.sourceforge.net>
7 * http://www.orbis-terrarum.net/?l=people.robbat2
9 * This data is used by the SQL Parser to recognize keywords
11 * It has been extracted from the lex.h file in the MySQL BK tree
12 * (around 4.0.2) as well as the MySQL documentation.
14 * Note: before adding a value in the arrays, ensure that you respect
15 * proper sorting, especially with underscores. And don't forget to
16 * update the _cnt variable at the end of each array.
17 * (It's slower to have PHP do the count).
19 * It's easier to use only uppercase for proper sorting. In case of
20 * doubt, use the DEBUG code after this function's definition.
22 * @package phpMyAdmin
24 if (! defined('PHPMYADMIN')) {
25 exit;
28 if (! isset($GLOBALS['sql_delimiter'])) {
29 $GLOBALS['sql_delimiter'] = ';';
32 /**
33 * @global array MySQL function names
35 $PMA_SQPdata_function_name = array (
36 'ABS',
37 'ACOS',
38 'ADDDATE',
39 'ADDTIME',
40 'AES_DECRYPT',
41 'AES_ENCRYPT',
42 'AREA', // Area() polygon-property-functions.html
43 'ASBINARY', // AsBinary()
44 'ASCII',
45 'ASIN',
46 'ASTEXT', // AsText()
47 'ATAN',
48 'ATAN2',
49 'AVG',
50 'BDMPOLYFROMTEXT', // BdMPolyFromText()
51 'BDMPOLYFROMWKB', // BdMPolyFromWKB()
52 'BDPOLYFROMTEXT', // BdPolyFromText()
53 'BDPOLYFROMWKB', // BdPolyFromWKB()
54 'BENCHMARK',
55 'BIN',
56 'BIT_AND',
57 'BIT_COUNT',
58 'BIT_LENGTH',
59 'BIT_OR',
60 'BIT_XOR', // group-by-functions.html
61 'BOUNDARY', // Boundary() general-geometry-property-functions.html
62 'BUFFER', // Buffer()
63 'CAST',
64 'CEIL',
65 'CEILING',
66 'CENTROID', // Centroid() multipolygon-property-functions.html
67 'CHAR', // string-functions.html
68 'CHARACTER_LENGTH',
69 'CHARSET', // information-functions.html
70 'CHAR_LENGTH',
71 'COALESCE',
72 'COERCIBILITY', // information-functions.html
73 'COLLATION', // information-functions.html
74 'COMPRESS', // string-functions.html
75 'CONCAT',
76 'CONCAT_WS',
77 'CONNECTION_ID',
78 'CONTAINS', // Contains()
79 'CONV',
80 'CONVERT',
81 'CONVERT_TZ',
82 'CONVEXHULL', // ConvexHull()
83 'COS',
84 'COT',
85 'COUNT',
86 'CRC32', // mathematical-functions.html
87 'CROSSES', // Crosses()
88 'CURDATE',
89 'CURRENT_DATE',
90 'CURRENT_TIME',
91 'CURRENT_TIMESTAMP',
92 'CURRENT_USER',
93 'CURTIME',
94 'DATABASE',
95 'DATE', // date-and-time-functions.html
96 'DATEDIFF', // date-and-time-functions.html
97 'DATE_ADD',
98 'DATE_DIFF',
99 'DATE_FORMAT',
100 'DATE_SUB',
101 'DAY',
102 'DAYNAME',
103 'DAYOFMONTH',
104 'DAYOFWEEK',
105 'DAYOFYEAR',
106 'DECODE',
107 'DEFAULT', // miscellaneous-functions.html
108 'DEGREES',
109 'DES_DECRYPT',
110 'DES_ENCRYPT',
111 'DIFFERENCE', // Difference()
112 'DIMENSION', // Dimension() general-geometry-property-functions.html
113 'DISJOINT', // Disjoint()
114 'DISTANCE', // Distance()
115 'ELT',
116 'ENCODE',
117 'ENCRYPT',
118 'ENDPOINT', // EndPoint() linestring-property-functions.html
119 'ENVELOPE', // Envelope() general-geometry-property-functions.html
120 'EQUALS', // Equals()
121 'EXP',
122 'EXPORT_SET',
123 'EXTERIORRING', // ExteriorRing() polygon-property-functions.html
124 'EXTRACT',
125 'EXTRACTVALUE', // ExtractValue() xml-functions.html
126 'FIELD',
127 'FIND_IN_SET',
128 'FLOOR',
129 'FORMAT',
130 'FOUND_ROWS',
131 'FROM_DAYS',
132 'FROM_UNIXTIME',
133 'GEOMCOLLFROMTEXT', // GeomCollFromText()
134 'GEOMCOLLFROMWKB', // GeomCollFromWKB()
135 'GEOMETRYCOLLECTION', // GeometryCollection()
136 'GEOMETRYCOLLECTIONFROMTEXT', // GeometryCollectionFromText()
137 'GEOMETRYCOLLECTIONFROMWKB', // GeometryCollectionFromWKB()
138 'GEOMETRYFROMTEXT', // GeometryFromText()
139 'GEOMETRYFROMWKB', // GeometryFromWKB()
140 'GEOMETRYN', // GeometryN() geometrycollection-property-functions.html
141 'GEOMETRYTYPE', // GeometryType() general-geometry-property-functions.html
142 'GEOMFROMTEXT', // GeomFromText()
143 'GEOMFROMWKB', // GeomFromWKB()
144 'GET_FORMAT',
145 'GET_LOCK',
146 'GLENGTH', // GLength() linestring-property-functions.html
147 'GREATEST',
148 'GROUP_CONCAT',
149 'GROUP_UNIQUE_USERS',
150 'HEX',
151 'HOUR',
152 'IF', //control-flow-functions.html
153 'IFNULL',
154 'INET_ATON',
155 'INET_NTOA',
156 'INSERT', // string-functions.html
157 'INSTR',
158 'INTERIORRINGN', // InteriorRingN() polygon-property-functions.html
159 'INTERSECTION', // Intersection()
160 'INTERSECTS', // Intersects()
161 'INTERVAL',
162 'ISCLOSED', // IsClosed() multilinestring-property-functions.html
163 'ISEMPTY', // IsEmpty() general-geometry-property-functions.html
164 'ISNULL',
165 'ISRING', // IsRing() linestring-property-functions.html
166 'ISSIMPLE', // IsSimple() general-geometry-property-functions.html
167 'IS_FREE_LOCK',
168 'IS_USED_LOCK', // miscellaneous-functions.html
169 'LAST_DAY',
170 'LAST_INSERT_ID',
171 'LCASE',
172 'LEAST',
173 'LEFT',
174 'LENGTH',
175 'LINEFROMTEXT', // LineFromText()
176 'LINEFROMWKB', // LineFromWKB()
177 'LINESTRING', // LineString()
178 'LINESTRINGFROMTEXT', // LineStringFromText()
179 'LINESTRINGFROMWKB', // LineStringFromWKB()
180 'LN',
181 'LOAD_FILE',
182 'LOCALTIME',
183 'LOCALTIMESTAMP',
184 'LOCATE',
185 'LOG',
186 'LOG10',
187 'LOG2',
188 'LOWER',
189 'LPAD',
190 'LTRIM',
191 'MAKEDATE',
192 'MAKETIME',
193 'MAKE_SET',
194 'MASTER_POS_WAIT',
195 'MAX',
196 'MBRCONTAINS', // MBRContains()
197 'MBRDISJOINT', // MBRDisjoint()
198 'MBREQUAL', // MBREqual()
199 'MBRINTERSECTS', // MBRIntersects()
200 'MBROVERLAPS', // MBROverlaps()
201 'MBRTOUCHES', // MBRTouches()
202 'MBRWITHIN', // MBRWithin()
203 'MD5',
204 'MICROSECOND',
205 'MID',
206 'MIN',
207 'MINUTE',
208 'MLINEFROMTEXT', // MLineFromText()
209 'MLINEFROMWKB', // MLineFromWKB()
210 'MOD',
211 'MONTH',
212 'MONTHNAME',
213 'NOW',
214 'MPOINTFROMTEXT', // MPointFromText()
215 'MPOINTFROMWKB', // MPointFromWKB()
216 'MPOLYFROMTEXT', // MPolyFromText()
217 'MPOLYFROMWKB', // MPolyFromWKB()
218 'MULTILINESTRING', // MultiLineString()
219 'MULTILINESTRINGFROMTEXT', // MultiLineStringFromText()
220 'MULTILINESTRINGFROMWKB', // MultiLineStringFromWKB()
221 'MULTIPOINT', // MultiPoint()
222 'MULTIPOINTFROMTEXT', // MultiPointFromText()
223 'MULTIPOINTFROMWKB', // MultiPointFromWKB()
224 'MULTIPOLYGON', // MultiPolygon()
225 'MULTIPOLYGONFROMTEXT', // MultiPolygonFromText()
226 'MULTIPOLYGONFROMWKB', // MultiPolygonFromWKB()
227 'NAME_CONST', // NAME_CONST()
228 'NOW', // NOW()
229 'NULLIF',
230 'NUMGEOMETRIES', // NumGeometries() geometrycollection-property-functions.html
231 'NUMINTERIORRINGS', // NumInteriorRings() polygon-property-functions.html
232 'NUMPOINTS', // NumPoints() linestring-property-functions.html
233 'OCT',
234 'OCTET_LENGTH',
235 'OLD_PASSWORD',
236 'ORD',
237 'OVERLAPS', // Overlaps()
238 'PASSWORD',
239 'PERIOD_ADD',
240 'PERIOD_DIFF',
241 'PI',
242 'POINT', // Point()
243 'POINTFROMTEXT', // PointFromText()
244 'POINTFROMWKB', // PointFromWKB()
245 'POINTN', // PointN() inestring-property-functions.html
246 'POINTONSURFACE', // PointOnSurface() multipolygon-property-functions.html
247 'POLYFROMTEXT', // PolyFromText()
248 'POLYFROMWKB', // PolyFromWKB()
249 'POLYGON', // Polygon()
250 'POLYGONFROMTEXT', // PolygonFromText()
251 'POLYGONFROMWKB', // PolygonFromWKB()
252 'POSITION',
253 'POW',
254 'POWER',
255 'QUARTER',
256 'QUOTE',
257 'RADIANS',
258 'RAND',
259 'RELATED', // Related()
260 'RELEASE_LOCK',
261 'REPEAT',
262 'REPLACE', // string-functions.html
263 'REVERSE',
264 'RIGHT',
265 'ROUND',
266 'ROW_COUNT', // information-functions.html
267 'RPAD',
268 'RTRIM',
269 'SCHEMA', // information-functions.html
270 'SECOND',
271 'SEC_TO_TIME',
272 'SESSION_USER',
273 'SHA',
274 'SHA1',
275 'SIGN',
276 'SIN',
277 'SLEEP', // miscellaneous-functions.html
278 'SOUNDEX',
279 'SPACE',
280 'SQRT',
281 'SRID', // general-geometry-property-functions.html
282 'STARTPOINT', // StartPoint() linestring-property-functions.html
283 'STD',
284 'STDDEV',
285 'STDDEV_POP', // group-by-functions.html
286 'STDDEV_SAMP', // group-by-functions.html
287 'STRCMP',
288 'STR_TO_DATE',
289 'SUBDATE',
290 'SUBSTR',
291 'SUBSTRING',
292 'SUBSTRING_INDEX',
293 'SUBTIME',
294 'SUM',
295 'SYMDIFFERENCE', // SymDifference()
296 'SYSDATE',
297 'SYSTEM_USER',
298 'TAN',
299 'TIME',
300 'TIMEDIFF',
301 'TIMESTAMP',
302 'TIMESTAMPADD',
303 'TIMESTAMPDIFF',
304 'TIME_FORMAT',
305 'TIME_TO_SEC',
306 'TOUCHES', // Touches()
307 'TO_DAYS',
308 'TRIM',
309 'TRUNCATE', // mathematical-functions.html
310 'UCASE',
311 'UNCOMPRESS', // string-functions.html
312 'UNCOMPRESSED_LENGTH', // string-functions.html
313 'UNHEX', // string-functions.html
314 'UNIQUE_USERS',
315 'UNIX_TIMESTAMP',
316 'UPDATEXML', // UpdateXML() xml-functions.html
317 'UPPER',
318 'USER',
319 'UTC_DATE',
320 'UTC_TIME',
321 'UTC_TIMESTAMP',
322 'UUID', // miscellaneous-functions.html
323 'VARIANCE', // group-by-functions.html
324 'VAR_POP', // group-by-functions.html
325 'VAR_SAMP', // group-by-functions.html
326 'VERSION',
327 'WEEK',
328 'WEEKDAY',
329 'WEEKOFYEAR',
330 'WITHIN', // Within()
331 'X', // point-property-functions.html
332 'Y', // point-property-functions.html
333 'YEAR',
334 'YEARWEEK'
337 * $PMA_SQPdata_function_name_cnt = count($PMA_SQPdata_function_name);
339 * @global integer MySQL attributes count
341 $PMA_SQPdata_function_name_cnt = 299;
344 * DEBUG
345 $test_PMA_SQPdata_function_name = $PMA_SQPdata_function_name;
346 sort($PMA_SQPdata_function_name);
347 if ($PMA_SQPdata_function_name != $test_PMA_SQPdata_function_name) {
348 echo 'sort properly like this<pre>';
349 print_r($PMA_SQPdata_function_name);
350 echo '</pre>';
355 * @global array MySQL attributes
357 $PMA_SQPdata_column_attrib = array (
358 'ARCHIVE', // Engine
359 'ASCII',
360 'AUTO_INCREMENT',
361 'BDB', // Engine
362 'BERKELEYDB', // Engine alias BDB
363 'BINARY',
364 'BLACKHOLE', // Engine
365 'CSV', // Engine
366 'DEFAULT',
367 'EXAMPLE', // Engine
368 'FEDERATED', // Engine
369 'HEAP', // Engine
370 'INNOBASE', // Engine alias InnoDB
371 'INNODB', // Engine InnoDB
372 'ISAM', // Engine
373 'MARIA', // Engine
374 'MEMORY', // Engine alias HEAP, but preferred
375 'MERGE', // Engine
376 'MRG_ISAM', // Engine
377 'MRG_MYISAM', // Engine alias MERGE
378 'MYISAM', // Engine MyISAM
379 'NATIONAL',
380 'NDB', // Engine alias NDBCLUSTER
381 'NDBCLUSTER', // Engine
382 'PRECISION',
383 'UNDEFINED',
384 'UNICODE',
385 'UNSIGNED',
386 'VARYING',
387 'ZEROFILL'
390 * $PMA_SQPdata_column_attrib_cnt = count($PMA_SQPdata_column_attrib);
392 * @global integer MySQL attributes count
394 $PMA_SQPdata_column_attrib_cnt = 30;
397 * words that are reserved by MySQL and may not be used as identifiers without quotes
399 * @see http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html
401 * @global array MySQL reserved words
403 $PMA_SQPdata_reserved_word = array (
404 'ACCESSIBLE', // 5.1
405 'ACTION',
406 'ADD',
407 'AFTER',
408 'AGAINST',
409 'AGGREGATE',
410 'ALGORITHM',
411 'ALL',
412 'ALTER',
413 'ANALYSE',
414 'ANALYZE',
415 'AND',
416 'AS',
417 'ASC',
418 'AUTOCOMMIT',
419 'AUTO_INCREMENT',
420 'AVG_ROW_LENGTH',
421 'BACKUP',
422 'BEGIN',
423 'BETWEEN',
424 'BINLOG',
425 'BOTH',
426 'BY',
427 'CASCADE',
428 'CASE',
429 'CHANGE',
430 'CHANGED',
431 'CHARSET',
432 'CHECK',
433 'CHECKSUM',
434 'COLLATE',
435 'COLLATION',
436 'COLUMN',
437 'COLUMNS',
438 'COMMENT',
439 'COMMIT',
440 'COMMITTED',
441 'COMPRESSED',
442 'CONCURRENT',
443 'CONSTRAINT',
444 'CONTAINS',
445 'CONVERT',
446 'CREATE',
447 'CROSS',
448 'CURRENT_TIMESTAMP',
449 'DATABASE',
450 'DATABASES',
451 'DAY',
452 'DAY_HOUR',
453 'DAY_MINUTE',
454 'DAY_SECOND',
455 'DEFINER',
456 'DELAYED',
457 'DELAY_KEY_WRITE',
458 'DELETE',
459 'DESC',
460 'DESCRIBE',
461 'DETERMINISTIC',
462 'DISTINCT',
463 'DISTINCTROW',
464 'DIV',
465 'DO',
466 'DROP',
467 'DUMPFILE',
468 'DUPLICATE',
469 'DYNAMIC',
470 'ELSE',
471 'ENCLOSED',
472 'END',
473 'ENGINE',
474 'ENGINES',
475 'ESCAPE',
476 'ESCAPED',
477 'EVENTS',
478 'EXECUTE',
479 'EXISTS',
480 'EXPLAIN',
481 'EXTENDED',
482 'FAST',
483 'FIELDS',
484 'FILE',
485 'FIRST',
486 'FIXED',
487 'FLUSH',
488 'FOR',
489 'FORCE',
490 'FOREIGN',
491 'FROM',
492 'FULL',
493 'FULLTEXT',
494 'FUNCTION',
495 'GEMINI',
496 'GEMINI_SPIN_RETRIES',
497 'GLOBAL',
498 'GRANT',
499 'GRANTS',
500 'GROUP',
501 'HAVING',
502 'HEAP',
503 'HIGH_PRIORITY',
504 'HOSTS',
505 'HOUR',
506 'HOUR_MINUTE',
507 'HOUR_SECOND',
508 'IDENTIFIED',
509 'IF',
510 'IGNORE',
511 'IN',
512 'INDEX',
513 'INDEXES',
514 'INFILE',
515 'INNER',
516 'INSERT',
517 'INSERT_ID',
518 'INSERT_METHOD',
519 'INTERVAL',
520 'INTO',
521 'INVOKER',
522 'IS',
523 'ISOLATION',
524 'JOIN',
525 'KEY',
526 'KEYS',
527 'KILL',
528 'LAST_INSERT_ID',
529 'LEADING',
530 'LEFT',
531 'LEVEL',
532 'LIKE',
533 'LIMIT',
534 'LINEAR', // 5.1
535 'LINES',
536 'LOAD',
537 'LOCAL',
538 'LOCK',
539 'LOCKS',
540 'LOGS',
541 'LOW_PRIORITY',
542 'MARIA', // 5.1 ?
543 'MASTER',
544 'MASTER_CONNECT_RETRY',
545 'MASTER_HOST',
546 'MASTER_LOG_FILE',
547 'MASTER_LOG_POS',
548 'MASTER_PASSWORD',
549 'MASTER_PORT',
550 'MASTER_USER',
551 'MATCH',
552 'MAX_CONNECTIONS_PER_HOUR',
553 'MAX_QUERIES_PER_HOUR',
554 'MAX_ROWS',
555 'MAX_UPDATES_PER_HOUR',
556 'MAX_USER_CONNECTIONS',
557 'MEDIUM',
558 'MERGE',
559 'MINUTE',
560 'MINUTE_SECOND',
561 'MIN_ROWS',
562 'MODE',
563 'MODIFY',
564 'MONTH',
565 'MRG_MYISAM',
566 'MYISAM',
567 'NAMES',
568 'NATURAL',
569 // 'NO' is not allowed in SQL-99 but is allowed in MySQL
570 //'NO',
571 'NOT',
572 'NULL',
573 'OFFSET',
574 'ON',
575 'OPEN',
576 'OPTIMIZE',
577 'OPTION',
578 'OPTIONALLY',
579 'OR',
580 'ORDER',
581 'OUTER',
582 'OUTFILE',
583 'PACK_KEYS',
584 'PAGE', // 5.1-maria ?
585 'PAGE_CHECKSUM', // 5.1
586 'PARTIAL',
587 'PARTITION', // 5.1
588 'PARTITIONS', // 5.1
589 'PASSWORD',
590 'PRIMARY',
591 'PRIVILEGES',
592 'PROCEDURE',
593 'PROCESS',
594 'PROCESSLIST',
595 'PURGE',
596 'QUICK',
597 'RAID0',
598 'RAID_CHUNKS',
599 'RAID_CHUNKSIZE',
600 'RAID_TYPE',
601 'RANGE', // 5.1
602 'READ',
603 'READ_ONLY', // 5.1
604 'READ_WRITE', // 5.1
605 'REFERENCES',
606 'REGEXP',
607 'RELOAD',
608 'RENAME',
609 'REPAIR',
610 'REPEATABLE',
611 'REPLACE',
612 'REPLICATION',
613 'RESET',
614 'RESTORE',
615 'RESTRICT',
616 'RETURN',
617 'RETURNS',
618 'REVOKE',
619 'RIGHT',
620 'RLIKE',
621 'ROLLBACK',
622 'ROW',
623 'ROWS',
624 'ROW_FORMAT',
625 'SECOND',
626 'SECURITY',
627 'SELECT',
628 'SEPARATOR',
629 'SERIALIZABLE',
630 'SESSION',
631 'SHARE',
632 'SHOW',
633 'SHUTDOWN',
634 'SLAVE',
635 'SONAME',
636 'SOUNDS', // string-functions.html
637 'SQL',
638 'SQL_AUTO_IS_NULL',
639 'SQL_BIG_RESULT',
640 'SQL_BIG_SELECTS',
641 'SQL_BIG_TABLES',
642 'SQL_BUFFER_RESULT',
643 'SQL_CACHE',
644 'SQL_CALC_FOUND_ROWS',
645 'SQL_LOG_BIN',
646 'SQL_LOG_OFF',
647 'SQL_LOG_UPDATE',
648 'SQL_LOW_PRIORITY_UPDATES',
649 'SQL_MAX_JOIN_SIZE',
650 'SQL_NO_CACHE',
651 'SQL_QUOTE_SHOW_CREATE',
652 'SQL_SAFE_UPDATES',
653 'SQL_SELECT_LIMIT',
654 'SQL_SLAVE_SKIP_COUNTER',
655 'SQL_SMALL_RESULT',
656 'SQL_WARNINGS',
657 'START',
658 'STARTING',
659 'STATUS',
660 'STOP',
661 'STORAGE',
662 'STRAIGHT_JOIN',
663 'STRING',
664 'STRIPED',
665 'SUPER',
666 'TABLE',
667 'TABLES',
668 'TEMPORARY',
669 'TERMINATED',
670 'THEN',
671 'TO',
672 'TRAILING',
673 'TRANSACTIONAL', // 5.1 ?
674 'TRUNCATE',
675 'TYPE',
676 'TYPES',
677 'UNCOMMITTED',
678 'UNION',
679 'UNIQUE',
680 'UNLOCK',
681 'UPDATE',
682 'USAGE',
683 'USE',
684 'USING',
685 'VALUES',
686 'VARIABLES',
687 'VIEW',
688 'WHEN',
689 'WHERE',
690 'WITH',
691 'WORK',
692 'WRITE',
693 'XOR',
694 'YEAR_MONTH'
697 * $PMA_SQPdata_reserved_word_cnt = count($PMA_SQPdata_reserved_word);
699 * @global integer MySQL reserved words count
701 $PMA_SQPdata_reserved_word_cnt = 291;
703 * The previous array must be sorted so that the binary search work.
704 * Sometimes a word is not added in the correct order, so
705 * this debugging code shows the problem. The same should be
706 * done for all arrays.
709 $original = $PMA_SQPdata_reserved_word;
710 sort($PMA_SQPdata_reserved_word);
711 $difference = array_diff_assoc($original, $PMA_SQPdata_reserved_word);
712 echo '<pre>';
713 print_r($difference);
714 echo '</pre>';
715 echo '<pre>';
716 print_r($PMA_SQPdata_reserved_word);
717 echo '</pre>';
721 * words forbidden to be used as column or table name wihtout quotes
722 * as seen in http://dev.mysql.com/doc/mysql/en/reserved-words.html
724 * @global array MySQL forbidden words
726 $PMA_SQPdata_forbidden_word = array (
727 'ACCESSIBLE', // 5.1
728 'ACTION',
729 'ADD',
730 'AFTER',
731 'AGAINST',
732 'AGGREGATE',
733 'ALGORITHM',
734 'ALL',
735 'ALTER',
736 'ANALYZE',
737 'AND',
738 'ANY',
739 'AS',
740 'ASC',
741 'ASCII',
742 'ASENSITIVE',
743 'AUTO_INCREMENT',
744 'AVG',
745 'AVG_ROW_LENGTH',
746 'BACKUP',
747 'BDB',
748 'BEFORE',
749 'BEGIN',
750 'BERKELEYDB',
751 'BETWEEN',
752 'BIGINT',
753 'BINARY',
754 'BINLOG',
755 'BIT',
756 'BLOB',
757 'BOOL',
758 'BOOLEAN',
759 'BOTH',
760 'BTREE',
761 'BY',
762 'BYTE',
763 'CACHE',
764 'CALL',
765 'CASCADE',
766 'CASCADED',
767 'CASE',
768 'CHAIN',
769 'CHANGE',
770 'CHANGED',
771 'CHAR',
772 'CHARACTER',
773 'CHARSET',
774 'CHECK',
775 'CHECKSUM',
776 'CIPHER',
777 'CLOSE',
778 'COLLATE',
779 'COLLATION',
780 'COLUMN',
781 'COLUMNS',
782 'COMMENT',
783 'COMMIT',
784 'COMMITTED',
785 'COMPACT',
786 'COMPRESSED',
787 'CONCURRENT',
788 'CONDITION',
789 'CONNECTION',
790 'CONSISTENT',
791 'CONSTRAINT',
792 'CONTAINS',
793 'CONTINUE',
794 'CONVERT',
795 'CREATE',
796 'CROSS',
797 'CUBE',
798 'CURRENT_DATE',
799 'CURRENT_TIME',
800 'CURRENT_TIMESTAMP',
801 'CURRENT_USER',
802 'CURSOR',
803 'DATA',
804 'DATABASE',
805 'DATABASES',
806 'DATE',
807 'DATETIME',
808 'DAY',
809 'DAY_HOUR',
810 'DAY_MICROSECOND',
811 'DAY_MINUTE',
812 'DAY_SECOND',
813 'DEALLOCATE',
814 'DEC',
815 'DECIMAL',
816 'DECLARE',
817 'DEFAULT',
818 'DEFINER',
819 'DELAYED',
820 'DELAY_KEY_WRITE',
821 'DELETE',
822 'DESC',
823 'DESCRIBE',
824 'DES_KEY_FILE',
825 'DETERMINISTIC',
826 'DIRECTORY',
827 'DISABLE',
828 'DISCARD',
829 'DISTINCT',
830 'DISTINCTROW',
831 'DIV',
832 'DO',
833 'DOUBLE',
834 'DROP',
835 'DUAL',
836 'DUMPFILE',
837 'DUPLICATE',
838 'DYNAMIC',
839 'EACH',
840 'ELSE',
841 'ELSEIF',
842 'ENABLE',
843 'ENCLOSED',
844 'END',
845 'ENGINE',
846 'ENGINES',
847 'ENUM',
848 'ERRORS',
849 'ESCAPE',
850 'ESCAPED',
851 'EVENTS',
852 'EXECUTE',
853 'EXISTS',
854 'EXIT',
855 'EXPANSION',
856 'EXPLAIN',
857 'EXTENDED',
858 'FALSE',
859 'FAST',
860 'FETCH',
861 'FIELDS',
862 'FILE',
863 'FIRST',
864 'FIXED',
865 'FLOAT',
866 'FLOAT4',
867 'FLOAT8',
868 'FLUSH',
869 'FOR',
870 'FORCE',
871 'FOREIGN',
872 'FOUND',
873 'FRAC_SECOND',
874 'FROM',
875 'FULL',
876 'FULLTEXT',
877 'FUNCTION',
878 'GEOMETRY',
879 'GEOMETRYCOLLECTION',
880 'GET_FORMAT',
881 'GLOBAL',
882 'GOTO',
883 'GRANT',
884 'GRANTS',
885 'GROUP',
886 'HANDLER',
887 'HASH',
888 'HAVING',
889 'HELP',
890 'HIGH_PRIORITY',
891 'HOSTS',
892 'HOUR',
893 'HOUR_MICROSECOND',
894 'HOUR_MINUTE',
895 'HOUR_SECOND',
896 'IDENTIFIED',
897 'IF',
898 'IGNORE',
899 'IMPORT',
900 'IN',
901 'INDEX',
902 'INDEXES',
903 'INFILE',
904 'INNER',
905 'INNOBASE',
906 'INNODB',
907 'INOUT',
908 'INSENSITIVE',
909 'INSERT',
910 'INSERT_METHOD',
911 'INT',
912 'INT1',
913 'INT2',
914 'INT3',
915 'INT4',
916 'INT8',
917 'INTEGER',
918 'INTERVAL',
919 'INTO',
920 'INVOKER',
921 'IO_THREAD',
922 'IS',
923 'ISOLATION',
924 'ISSUER',
925 'ITERATE',
926 'JOIN',
927 'KEY',
928 'KEYS',
929 'KILL',
930 'LABEL',
931 'LANGUAGE',
932 'LAST',
933 'LEADING',
934 'LEAVE',
935 'LEAVES',
936 'LEFT',
937 'LEVEL',
938 'LIKE',
939 'LIMIT',
940 'LINEAR', // 5.1
941 'LINES',
942 'LINESTRING',
943 'LOAD',
944 'LOCAL',
945 'LOCALTIME',
946 'LOCALTIMESTAMP',
947 'LOCK',
948 'LOCKS',
949 'LOGS',
950 'LONG',
951 'LONGBLOB',
952 'LONGTEXT',
953 'LOOP',
954 'LOW_PRIORITY',
955 'MASTER',
956 'MASTER_CONNECT_RETRY',
957 'MASTER_HOST',
958 'MASTER_LOG_FILE',
959 'MASTER_LOG_POS',
960 'MASTER_PASSWORD',
961 'MASTER_PORT',
962 'MASTER_SERVER_ID',
963 'MASTER_SSL',
964 'MASTER_SSL_CA',
965 'MASTER_SSL_CAPATH',
966 'MASTER_SSL_CERT',
967 'MASTER_SSL_CIPHER',
968 'MASTER_SSL_KEY',
969 'MASTER_USER',
970 'MATCH',
971 'MAX_CONNECTIONS_PER_HOUR',
972 'MAX_QUERIES_PER_HOUR',
973 'MAX_ROWS',
974 'MAX_UPDATES_PER_HOUR',
975 'MAX_USER_CONNECTIONS',
976 'MEDIUM',
977 'MEDIUMBLOB',
978 'MEDIUMINT',
979 'MEDIUMTEXT',
980 'MERGE',
981 'MICROSECOND',
982 'MIDDLEINT',
983 'MIGRATE',
984 'MINUTE',
985 'MINUTE_MICROSECOND',
986 'MINUTE_SECOND',
987 'MIN_ROWS',
988 'MOD',
989 'MODE',
990 'MODIFIES',
991 'MODIFY',
992 'MONTH',
993 'MULTILINESTRING',
994 'MULTIPOINT',
995 'MULTIPOLYGON',
996 'MUTEX',
997 'NAME',
998 'NAMES',
999 'NATIONAL',
1000 'NATURAL',
1001 'NCHAR',
1002 'NDB',
1003 'NDBCLUSTER',
1004 'NEW',
1005 'NEXT',
1006 'NO',
1007 'NONE',
1008 'NOT',
1009 'NO_WRITE_TO_BINLOG',
1010 'NULL',
1011 'NUMERIC',
1012 'NVARCHAR',
1013 'OFFSET',
1014 'OLD_PASSWORD',
1015 'ON',
1016 'ONE',
1017 'ONE_SHOT',
1018 'OPEN',
1019 'OPTIMIZE',
1020 'OPTION',
1021 'OPTIONALLY',
1022 'OR',
1023 'ORDER',
1024 'OUT',
1025 'OUTER',
1026 'OUTFILE',
1027 'PACK_KEYS',
1028 'PARTIAL',
1029 'PASSWORD',
1030 'PHASE',
1031 'POINT',
1032 'POLYGON',
1033 'PRECISION',
1034 'PREPARE',
1035 'PREV',
1036 'PRIMARY',
1037 'PRIVILEGES',
1038 'PROCEDURE',
1039 'PROCESSLIST',
1040 'PURGE',
1041 'QUARTER',
1042 'QUERY',
1043 'QUICK',
1044 'RAID0',
1045 'RAID_CHUNKS',
1046 'RAID_CHUNKSIZE',
1047 'RAID_TYPE',
1048 'RANGE', // 5.1
1049 'READ',
1050 'READ_ONLY', // 5.1
1051 'READ_WRITE', // 5.1
1052 'READS',
1053 'REAL',
1054 'RECOVER',
1055 'REDUNDANT',
1056 'REFERENCES',
1057 'REGEXP',
1058 'RELAY_LOG_FILE',
1059 'RELAY_LOG_POS',
1060 'RELAY_THREAD',
1061 'RELEASE',
1062 'RELOAD',
1063 'RENAME',
1064 'REPAIR',
1065 'REPEAT',
1066 'REPEATABLE',
1067 'REPLACE',
1068 'REPLICATION',
1069 'REQUIRE',
1070 'RESET',
1071 'RESTORE',
1072 'RESTRICT',
1073 'RESUME',
1074 'RETURN',
1075 'RETURNS',
1076 'REVOKE',
1077 'RIGHT',
1078 'RLIKE',
1079 'ROLLBACK',
1080 'ROLLUP',
1081 'ROUTINE',
1082 'ROW',
1083 'ROWS',
1084 'ROW_FORMAT',
1085 'RTREE',
1086 'SAVEPOINT',
1087 'SCHEMA',
1088 'SCHEMAS',
1089 'SECOND',
1090 'SECOND_MICROSECOND',
1091 'SECURITY',
1092 'SELECT',
1093 'SENSITIVE',
1094 'SEPARATOR',
1095 'SERIAL',
1096 'SERIALIZABLE',
1097 'SESSION',
1098 'SET',
1099 'SHARE',
1100 'SHOW',
1101 'SHUTDOWN',
1102 'SIGNED',
1103 'SIMPLE',
1104 'SLAVE',
1105 'SMALLINT',
1106 'SNAPSHOT',
1107 'SOME',
1108 'SONAME',
1109 'SOUNDS',
1110 'SPATIAL',
1111 'SPECIFIC',
1112 'SQL',
1113 'SQLEXCEPTION',
1114 'SQLSTATE',
1115 'SQLWARNING',
1116 'SQL_BIG_RESULT',
1117 'SQL_BUFFER_RESULT',
1118 'SQL_CACHE',
1119 'SQL_CALC_FOUND_ROWS',
1120 'SQL_NO_CACHE',
1121 'SQL_SMALL_RESULT',
1122 'SQL_THREAD',
1123 'SQL_TSI_DAY',
1124 'SQL_TSI_FRAC_SECOND',
1125 'SQL_TSI_HOUR',
1126 'SQL_TSI_MINUTE',
1127 'SQL_TSI_MONTH',
1128 'SQL_TSI_QUARTER',
1129 'SQL_TSI_SECOND',
1130 'SQL_TSI_WEEK',
1131 'SQL_TSI_YEAR',
1132 'SSL',
1133 'START',
1134 'STARTING',
1135 'STATUS',
1136 'STOP',
1137 'STORAGE',
1138 'STRAIGHT_JOIN',
1139 'STRING',
1140 'STRIPED',
1141 'SUBJECT',
1142 'SUPER',
1143 'SUSPEND',
1144 'TABLE',
1145 'TABLES',
1146 'TABLESPACE',
1147 'TEMPORARY',
1148 'TEMPTABLE',
1149 'TERMINATED',
1150 'TEXT',
1151 'THEN',
1152 'TIME',
1153 'TIMESTAMP',
1154 'TIMESTAMPADD',
1155 'TIMESTAMPDIFF',
1156 'TINYBLOB',
1157 'TINYINT',
1158 'TINYTEXT',
1159 'TO',
1160 'TRAILING',
1161 'TRANSACTION',
1162 'TRIGGER',
1163 'TRIGGERS',
1164 'TRUE',
1165 'TRUNCATE',
1166 'TYPE',
1167 'TYPES',
1168 'UNCOMMITTED',
1169 'UNDEFINED',
1170 'UNDO',
1171 'UNICODE',
1172 'UNION',
1173 'UNIQUE',
1174 'UNKNOWN',
1175 'UNLOCK',
1176 'UNSIGNED',
1177 'UNTIL',
1178 'UPDATE',
1179 'USAGE',
1180 'USE',
1181 'USER',
1182 'USER_RESOURCES',
1183 'USE_FRM',
1184 'USING',
1185 'UTC_DATE',
1186 'UTC_TIME',
1187 'UTC_TIMESTAMP',
1188 'VALUE',
1189 'VALUES',
1190 'VARBINARY',
1191 'VARCHAR',
1192 'VARCHARACTER',
1193 'VARIABLES',
1194 'VARYING',
1195 'VIEW',
1196 'WARNINGS',
1197 'WEEK',
1198 'WHEN',
1199 'WHERE',
1200 'WHILE',
1201 'WITH',
1202 'WORK',
1203 'WRITE',
1204 'X509',
1205 'XA',
1206 'XOR',
1207 'YEAR',
1208 'YEAR_MONTH',
1209 'ZEROFILL'
1212 * count($PMA_SQPdata_forbidden_word);
1214 * @global integer MySQL forbidden words count
1216 $PMA_SQPdata_forbidden_word_cnt = 483;
1219 * the MySQL column/data types
1221 * @see http://dev.mysql.com/doc/refman/5.1/en/data-types.html
1222 * @see http://dev.mysql.com/doc/refman/5.1/en/mysql-spatial-datatypes.html
1224 * @global array MySQL column types
1226 $PMA_SQPdata_column_type = array (
1227 'BIGINT',
1228 'BINARY',
1229 'BIT',
1230 'BLOB',
1231 'BOOL',
1232 'BOOLEAN', // numeric-type-overview.html
1233 'CHAR',
1234 'CHARACTER',
1235 'DATE',
1236 'DATETIME',
1237 'DEC',
1238 'DECIMAL',
1239 'DOUBLE',
1240 'ENUM',
1241 'FLOAT',
1242 'FLOAT4',
1243 'FLOAT8',
1244 'GEOMETRY', // spatial
1245 'GEOMETRYCOLLECTION', // spatial
1246 'INT',
1247 'INT1',
1248 'INT2',
1249 'INT3',
1250 'INT4',
1251 'INT8',
1252 'INTEGER',
1253 'LINESTRING', // spatial
1254 'LONG',
1255 'LONGBLOB',
1256 'LONGTEXT',
1257 'MEDIUMBLOB',
1258 'MEDIUMINT',
1259 'MEDIUMTEXT',
1260 'MIDDLEINT',
1261 'MULTILINESTRING', // spatial
1262 'MULTIPOINT', // spatial
1263 'MULTIPOLYGON', // spatial
1264 'NCHAR',
1265 'NUMERIC',
1266 'POINT', // spatial
1267 'POLYGON', // spatial
1268 'REAL',
1269 'SERIAL', // alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
1270 'SET',
1271 'SMALLINT',
1272 'TEXT',
1273 'TIME',
1274 'TIMESTAMP',
1275 'TINYBLOB',
1276 'TINYINT',
1277 'TINYTEXT',
1278 'VARBINARY',
1279 'VARCHAR',
1280 'YEAR'
1283 * $PMA_SQPdata_column_type_cnt = count($PMA_SQPdata_column_type);
1285 * @global integer MySQL column types count
1287 $PMA_SQPdata_column_type_cnt = 54;
1290 * check counts
1291 foreach ($GLOBALS as $n => $a) {
1292 echo is_array($a) ? $n . ': ' . count($a) . '<br />' : '';