home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February (DVD) / PCWorld_2008-02_DVD.iso / v cisle / PHP / PHP.exe / xampp-win32-1.6.5-installer.exe / phpMyAdmin / libraries / sqlparser.data.php < prev    next >
Encoding:
PHP Script  |  2007-12-20  |  26.7 KB  |  1,277 lines

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